Create a table or view
Click + at the foot of the sidebar and choose New Table… or New View…, or use Database > New Table… and Database > New View…. New Table… opens the visual structure editor (see Table Structure); on DynamoDB it opens a form for the keys, capacity and indexes instead. New View… opens a query tab holding aCREATE VIEW template for the engine. The same + menu carries New Schema… and New Database… where the engine has them, and New Folder for sidebar folders.
The sidebar’s right-click menu over empty space holds the same items. Safe mode dims them in the + menu and the menu bar, and removes them from the right-click menu. An item the engine cannot do is left out: Redis and Kafka get no New Table…, and an engine without views gets no New View….
Drop and truncate
Right-click a table and choose Delete to drop it, or Truncate to empty it and keep the structure. Database > Truncate Table andOption+Delete do the same. Cmd-click to select several tables first and one confirmation covers all of them, with the same options applied to each.
Confirming with Drop or Truncate stages the operation. The row picks up a red minus badge for a pending drop, an orange exclamation badge for a pending truncate. Preview SQL (
Cmd+Shift+P) shows the statements, Save Changes (Cmd+S) runs them alongside any pending cell edits, and choosing the same menu item again takes the table back out of the queue. Once a drop reaches the server, the table leaves the sidebar and completion, and every tab showing it closes, in every window on the connection.


Drop table confirmation with options
Dropping is irreversible. On MySQL and MariaDB, truncate also resets the auto-increment counter. Back up important data first.
Rename
Renaming happens in the row itself. Choose Rename from a table’s right-click menu and the label becomes a field: Return commits, Escape leaves the name alone, and clicking elsewhere commits. The item is absent where the engine cannot rename that kind of object. The statement runs at once instead of joining the drop and truncate queue, so Preview SQL never shows it. Everything bound to the table follows the new name: open tabs keep their rows, filters, sort and column widths, a favourite stays a favourite, and the Recent entry holds its place. A drop or truncate already queued against that table comes back out of the queue.

The row's label becomes the rename field
No other engine has a rename, so the item never appears on Bigtable, Cassandra, DynamoDB, Elasticsearch, etcd, Firestore, the Firebase Realtime Database, Kafka, Redis, SurrealDB, Typesense or Beancount. What resembles one there is a copy followed by a delete, and it changes record identity.
Rename Database and Rename Schema are absent on the container the connection is browsing. Switch to another one first, then rename the one you left.
Drop or rename with SQL
ADROP TABLE, DROP VIEW, ALTER TABLE ... RENAME TO, RENAME TABLE or SQL Server sp_rename run in a query tab, or by an MCP client, counts as a sidebar drop or rename once it commits. Tabs on the table close or take the new name, and its saved filters, column layout, highlight rules, value formats, foreign key label columns, folder, saved import mapping, Generate Rows settings, favorite, Recent entry and Table Health history go with it. A drop that is rolled back leaves all of them in place. So does every drop in a run that ends inside a transaction, every drop on a SQL Server session with IMPLICIT_TRANSACTIONS on, and every drop in a SQL Server script that uses IF, WHILE, GOTO, RETURN or TRY...CATCH. A SQL file run through Import Data, or a restored backup, refreshes the sidebar and keeps every table’s settings.
This works on MySQL, MariaDB, PostgreSQL, Redshift, SQLite, SQL Server, Oracle, ClickHouse and DuckDB. On PostgreSQL, Redshift and SQL Server, name the schema, as in public.orders, and on DuckDB the database and the schema, because a bare name there resolves through session state such as the search path or the login’s default schema. On the other engines a name stops being followed once something on the connection could have redirected it: a temporary table of the same name, a procedure call or anonymous block, or a statement that changes the current schema, whether it ran in a query tab, in the connection’s Startup Commands or in an imported SQL file. A rename written with IF EXISTS is never followed, since it succeeds when there was nothing to rename.
Maintenance
Right-click a table, choose Maintenance, and pick an operation. The sheet shows the operation’s options and the statement the driver will run, rebuilt as each option changes, so what is previewed is what executes. Each operation lists the object kinds it applies to, so a view offers only the operations its server accepts. On PostgreSQL that means VACUUM and REINDEX are absent on a view, which the server skips or refuses, and CLUSTER is absent on a partitioned table, which can never be clustered. An operation that acts on the whole database, such as SQLite’s VACUUM and its integrity check, names the database rather than a table.
PostgreSQL VACUUM carries FULL (rewrites the table and blocks access), ANALYZE, and VERBOSE toggles. MySQL CHECK TABLE offers QUICK, FAST, MEDIUM (the default), EXTENDED, and CHANGED. The options come from the driver, so an engine that adds one shows it without an app change. No other engine reports maintenance operations, so the submenu is hidden there, and in read-only safe mode.
A run that comes back clean shows nothing more. When the server answers with a note, such as MySQL’s “Table does not support optimize, doing recreate + analyze instead” or a problem SQLite’s integrity check found, a sheet lists it.
Generate test rows
Right-click a table and choose Generate Rows… to fill it with made-up data. Set the number of rows, from 1 to 1,000,000, pick a generator for each column on the left, and check the first 10 rows in the preview before anything runs.

Generate Rows with a column's generator and the preview
email column gets addresses on the reserved example.com, example.net and example.org domains, created_at gets dates in this year and the four before it, an enum gets its own labels, and an integer key gets a sequence that starts after its largest value. Keep those unless the data needs a shape of its own.
The sheet keeps every constraint the table declares, and stops Generate with the column’s name when a setting cannot:
- A primary key or unique column never repeats, and neither does a key over several columns. A range or list with fewer values than rows is refused up front.
- A foreign key column picks from the first 10,000 keys of the referenced table. A
NOT NULLkey into an empty table is refused. - Identity, auto-increment,
serial, SQLiteINTEGER PRIMARY KEYand generated columns are left to the server. - A nullable column takes a NULL ratio.
INSERT statements in a new query tab instead, for up to 10,000 rows. The settings are saved per table for the next time.
Views
Views carry an eye icon in the sidebar; materialized views and foreign tables get their own. All three are read-only kinds, so their menus drop Truncate and Import, and the drop item reads Drop View, Drop Materialized View, or Drop Foreign Table. Dropping removes the definition only, and the data in the underlying tables stays. Click + at the foot of the sidebar and choose New View… to write a new one; right-click an existing view and choose Edit View Definition to open the current definition in a query tab. Either way, execute the statement to apply it. Show DDL opens the definition in a read-only tab, with Copy, Export and Open in Editor on it; Copy DDL puts the same statement straight on the clipboard. Both stay available on a read-only connection, where Edit View Definition is hidden. A materialized view holds stored rows, so refreshing it is a server operation. Right-click one and choose Refresh Materialized View…, or use Database > Refresh Materialized View…. The confirmation names the view and warns that other sessions cannot read it while the refresh runs. Refresh concurrently leaves readers alone; it is available on PostgreSQL for a view that has been populated and carries a unique index on plain columns with noWHERE clause, and the alert says which of the two is missing when it is dimmed. Tabs showing the view reload when the refresh finishes. A plain view stores nothing, so Cmd+R re-runs its query instead.
Comments are edited per object. Right-click a table or view and choose Edit Comment…, or open its Structure view with nothing selected and type in the inspector’s Comment field; saving an empty field removes the comment. Column comments live in the Columns section.
Engines installed as plugins need their latest plugin version.
Sequences
PostgreSQL and MariaDB sequences are listed under Sequences in each schema, with a number icon. Hover one to see the column that owns it, such asorders.id for a serial or identity column. The sidebar filter and Open Quickly find sequences by name.
Double-click a sequence to open it. On PostgreSQL the grid shows last_value, log_cnt and is_called, and the DDL tab of Show Structure holds the CREATE SEQUENCE statement with the data type, start, increment, minimum, maximum and cache, followed by OWNED BY and the setval that restores its position. On MariaDB the grid shows every setting.
A sequence is a read-only kind: its menu drops Truncate and Import, the Structure tab offers no edit, and the drop item reads Drop Sequence. Rename works on both engines.
On PostgreSQL, right-click a sequence for two more commands, also under Database > Set Next Value… and Database > Edit Sequence…:
- Set Next Value… sets what the next
nextvalreturns. For a sequence a column owns, After the values already in moves it one step past that column’s highest value, or its lowest for a descending sequence, which repairs a sequence that fell behind its table after a bulk load or a restore. It never moves a sequence back, and it holds inserts into the table until it is done. To move a sequence back, type the value. - Edit Sequence… shows the data type, start, next value and owner, and changes the increment, minimum, maximum, cache and cycling through
ALTER SEQUENCE.
CREATE SEQUENCE template in a query tab.
MariaDB refuses UPDATE, DELETE and TRUNCATE on a sequence with error 1031, and ALTER TABLE … ADD COLUMN with error 4086. Rename goes through RENAME TABLE. Change a MariaDB sequence’s value with SETVAL in the query editor.
System-versioned tables
A MariaDB table declaredWITH SYSTEM VERSIONING stays an ordinary table: row editing, Import, index edits, comments, rename and drop all work. Truncate alone is withheld, because the server refuses it with error 4137. Delete the history with DELETE HISTORY FROM table_name instead. On iPhone and iPad the listing reports such a table as a plain one, so Truncate is offered there and the server’s refusal comes back as an alert.
Databases and schemas
Cmd+K switches database, covered in Managing Connections. The switcher takes the engine’s own vocabulary: Schema on Oracle and Spanner, Keyspace on Cassandra, Dataset on BigQuery, Instance on Bigtable, Namespace on SurrealDB. SQLite is file-based, so it points at the welcome window to open a different file.


Database switcher with search
Dropping a database permanently deletes every table in it. The server rejects the drop if your account lacks the privilege.
Several at once
Shift-click for a range, Cmd-click to add or remove one, and the menu counts what it covers: Drop 3 Databases…, Copy 3 Names. Refresh reloads every selected database. Export… opens the export dialog with every table of the selected database already selected, one database at a time; it is absent on DuckDB and PGlite for any database other than the active one. Use as Active Database appears only when a single row is selected and it is not already active. Databases the server will not drop are left out of the drop item. A drop that fails partway finishes the rest, then reports which ones failed and why.Schemas
On engines that group tables by schema, the same menu appears on a schema row: PostgreSQL, SQL Server, SurrealDB, and Dameng. PostgreSQL and Dameng drop the schema withCASCADE. SQL Server has no cascade, so it refuses to drop a schema that still holds objects; drop those first. The confirmation only promises to take dependent objects with it on the engines that do.
Dropping a schema permanently deletes everything in it. On PostgreSQL and Dameng it also drops objects in other schemas that depend on it.
Creating and editing a schema
New Schema… and Edit Schema… sit on the schema row’s menu, at the bottom of the schema switcher, and under Database > Schema. Both open a sheet whose last section is the statements it will run.
A schema on Oracle is a user, so it is created in Users & Roles rather than here. Redshift and CockroachDB report an owner and a comment but no privilege grid, because neither reads a schema ACL the way PostgreSQL does.
Only the boxes you change produce SQL: a role you never touch generates neither a
GRANT nor a REVOKE. The grid is re-read against the server at the moment you press Save, so a grant another session added while the sheet was open survives.
A checked box is dimmed when another role granted that privilege. REVOKE removes only what the role you are connected as granted, so clearing such a box would run a statement that succeeds and leaves the access in place. Connect as the granting role, or as a member of it, to change those.
System schemas are refused for create, edit, rename and drop.
