Everything you need, nothing you don't

TabulaSQL covers the full loop of working with MySQL, MariaDB, PostgreSQL & SQLite: connecting, browsing, querying, editing, and managing schema, in one focused desktop app. Below is a real walkthrough of the UI, not mockups.

MySQL, MariaDB, PostgreSQL, and SQLite

Pick a driver in the connection form: MySQL/MariaDB, PostgreSQL, or a local SQLite file. Connect, browse, query, and edit all four. MySQL and MariaDB still have the deepest schema tools (indexes, foreign keys, routines, and a user manager). Minimum versions: MySQL 5.7+ / MariaDB 10.4+. Developed and tested against MySQL 8.4, MySQL 9.7, and MariaDB 11, plus PostgreSQL servers and SQLite files.

MySQL

Connect to MySQL 5.7 and newer. Works with local installs, remote servers, and cloud-hosted MySQL that speak the standard protocol. Full schema tools, copy wizard, and user manager.

MariaDB

First-class MariaDB support from 10.4 up. Same MySQL-protocol connection flow, explorer, editor, schema tools, and user manager.

PostgreSQL

Add a PostgreSQL connection (default port 5432). Browse databases, tables, and views, run SQL, edit rows, use Explain with a plan tree, and open an ER diagram.

SQLite

Point the connection at a local .sqlite file instead of a host. Browse tables and views, query, and edit without standing up a server.

A 40-second tour of the real app

Browse tables, open context menus, manage indexes and foreign keys, follow relations, filter and resize columns, create a connection, export credentials, run a JOIN with a stored function, and check EXPLAIN, all without leaving the keyboard path you already know.

One window for your whole database workflow

Connections on the left, an object explorer for the active server, a multi-tab SQL editor in the middle, and a results panel underneath for table data, query output, messages, and schema info. No modal maze: the tools stay where you left them.

Add a server in seconds, then move it between machines just as fast

Every server you work with lives in one sidebar. Pick a driver first: MySQL/MariaDB, PostgreSQL, or SQLite. Click once to connect, see a live open badge when a session is active, and colour-code connections so staging never looks like production. Passwords are stored encrypted on your machine.

New connection form

Name the connection, pick a driver and colour, then set host/port/username/password (or a SQLite file path). Optionally restrict the tree to a single database. There's a Test connection button before you save, and an SSH tunnel option with key or password auth for MySQL/MariaDB and PostgreSQL. Credentials stay on your machine.

Export credentials safely

Export selected connections as a .dbmconn file with an optional passphrase, or as plain JSON. Perfect for onboarding a new laptop without retyping every password.

Duplicate, edit, and reconnect without friction

Duplicate a connection from the sidebar when you need a near-identical staging or read-only twin. Edit an open connection and TabulaSQL closes the old session and reconnects with the new host, credentials, or SSH settings automatically, so you are not stuck on a stale tunnel.

  • One-click open from the sidebar
  • Duplicate connections for quick variants
  • Save edits on an open tab → disconnect + reconnect

Tip

Colour-code production connections and keep Safe Lock on when you are browsing live data. That way a mistaken Save Changes still shows you the SQL first.

Import on the other machine

Drop in a .dbmconn or .json export, unlock encrypted files with your passphrase, preview what will be imported, and choose how each connection is handled. No cloud account required, just a file.

  • Encrypted transfer with a passphrase you choose
  • Preview before anything is written
  • Works offline: credentials never leave your devices

See the whole schema at a glance

Expand a database and TabulaSQL lists tables, views, procedures, functions, triggers, and events in one tree. Filter with plain text or regex, multi-select objects for bulk copy, and refresh when the schema changes under you.

  • Click a table to load its data into the grid instantly
  • Regex filter for large schemas
  • Keyboard navigation between tables

Routines belong in the tree too

Stored procedures, functions, triggers, and events aren't second-class. Open their DDL in the editor to create, review, alter, or drop them yourself, using the same “edit the SQL” approach you already use for tables, instead of fighting a half-baked visual designer.

Write real SQL with results that keep up

CodeMirror 6 editing with syntax highlighting, schema-aware autocomplete, multi-tabs, and multiple statements per run. Shortcuts match how you already work: Ctrl+Enter to run, Ctrl+Shift+Enter for a selection, Ctrl+Space for autocomplete, Ctrl+P for the command palette.

A real JOIN across orders and customers, calling the database function order_total(). Results land in the Table Data tab with timing and row counts.

Query history per connection

Every statement you run is kept locally per connection. Open the history drawer, search past queries, and insert one back into the editor when you need that JOIN you wrote last Tuesday.

EXPLAIN before you ship

Hit Explain to inspect the plan without changing your SQL. Switch to the visual plan tree when you want the shape of the query, not just the raw grid. Spot missing indexes and expensive scans while the statement is still in the editor.

The same workspace after a clean query run: editor on top, spreadsheet-style results below, database context always visible. From the toolbar you can Format SQL, save the statement, open optional AI text-to-SQL, or chart a numeric result column.

Version 1.0.9

AI, palette, diagrams, and MySQL users

These landed in recent app releases. They are optional extras on top of the same local-first workflow: no account, no telemetry, no paid unlock.

Ask AI to write SQL

Open the AI drawer from the query toolbar or the command palette. TabulaSQL includes schema context so the model writes against your tables, not a generic example. Bring your own key for OpenAI, Anthropic, or an OpenAI-compatible base URL. Keys are encrypted in the local SQLite settings store; nothing is sent until you click Generate.

Command palette

Ctrl/Cmd+P searches tables, saved queries, and actions: Ask AI, AI settings, ER diagram, and (on MySQL/MariaDB) the user manager. Arrow keys plus Enter run the highlighted item.

ER diagram

Open an entity-relationship view of the current database from the object menu or palette. Tables and foreign-key edges are built from the live schema, so you can see how a database is wired before writing a JOIN.

MySQL user manager

On MySQL and MariaDB connections, inspect users and hosts, read grants, and create a user with a database grant. PostgreSQL and SQLite keep their own admin paths; this panel is MySQL-protocol only.

Saved queries and result charts

Save a statement against the current connection and reload it later from the editor or palette. When a result has a numeric column, toggle Chart for a simple bar series (first text column as labels, first numeric column as values).

Clipboard import

In the data grid, Import clipboard accepts CSV, TSV, or JSON and maps columns onto the open table so you can paste rows without a separate import wizard.

Browse and edit like a spreadsheet

Open a table and you get a full grid: sort by clicking headers, page with first-row / row-count controls, filter with a dedicated dialog, resize columns when a VARCHAR is too wide, and edit cells in place. Single-click a row to keep it highlighted while you scroll sideways. Pending changes highlight in amber until you save or cancel.

Fast table browsing

Click any table in the explorer and the grid fills with live data, row counts, and timing. Loads over SSH are quicker than they used to be, and navigating away cancels a hanging fetch. Limit rows when you only need a sample.

Readable columns, real data

NULLs are marked clearly, long text truncates with a viewer for the full value, and the toolbar stays out of your way until you need Filter, + Row, or Save Changes. Select rows with checkboxes, Shift-click, or Ctrl/Cmd+A when you need bulk delete.

Custom filters

Build conditions with operators like =, LIKE, IN, BETWEEN, and IS NULL. Or right-click a cell and filter to “this value” in one move. Active filters show as chips you can clear anytime.

Inline editing with a safety net

Double-click a cell to edit; a single click only highlights the row. Unsaved edits light up amber and the toolbar shows Save Changes / Cancel Changes, so a typo never becomes a silent UPDATE.

Insert rows without leaving the grid

Hit + Row (or use the cell context menu) and fill a form that knows your column types: enums become selects, timestamps stay editable, defaults stay optional.

Resize columns to fit

Drag the column edge when email addresses or JSON specs need more room. Double-click the leading handle to auto-fit every column to its content.

Follow foreign keys without writing a JOIN

Hover an FK cell and jump to the related record, or right-click and choose Show Related Record…. The dialog shows the full parent row, the relationship path (for example orders.customer_id → customers.id), and a button to open that table in the grid. Real foreign-key constraints work, and Laravel-style xxx_id columns are recognised too.

  • Drill further into nested relations
  • Open the related table with one click
  • Works from the cell menu and the inline “…” affordance

Cell context menu = power tools

Right-click any cell for insert/duplicate/delete row, set NULL / empty / default, quick filters, copy as CSV or INSERT, and export the whole result as CSV, JSON, or SQL. The same menu surfaces related-record navigation when you're on a foreign key.

Tables, views, routines, indexes, and foreign keys

Right-click a table for the structural work you do every week: create table, index manager, foreign key manager, or alter via DDL in the editor. The same DDL-in-editor pattern covers create, alter, and drop for views, procedures, functions, triggers, and events. Truncate or empty a database when you need a clean slate without deleting the database itself.

Manage indexes

See existing indexes, uniqueness, and column lists. Add a new index by picking columns and optionally marking it unique. Drop ones you no longer need.

Foreign keys

Inspect constraints with ON DELETE / ON UPDATE behaviour, or add a new FK by choosing local column, referenced table, and referenced column.

Create table

Define columns with type, nullability, default, primary key, and auto-increment. Add or remove rows in the designer, then create, or paste DDL into the editor if you prefer raw SQL.

Export dumps, import SQL, copy between databases

Whether you're backing up a schema, seeding a staging copy, or moving tables and routines between servers, TabulaSQL keeps the wizards short and the options explicit. SQL dumps are generated in pure PHP, so you don't need mysqldump installed.

SQL export wizard

Pick tables and views, choose structure and/or data, optionally emit DROP IF EXISTS and CREATE DATABASE. Download a dump you can re-run anywhere.

Copy between connections

Copy tables, views, procedures, functions, triggers, and events to another connection. Chunked, foreign-key safe, with live progress, and adaptive handling when a row is larger than the target server's max_allowed_packet.

Import SQL files

Point at a .sql file and run it against the active database, with per-statement error reporting. Useful for migrations, seed scripts, and restores without opening a terminal.

Backup from the context menu

Right-click a table → Backup/Export for a SQL dump dialog, or export data directly as CSV or JSON. Result sets from the grid export the same way.

Right-click the object, get the action

Table menus cover open, copy, backup, import, paste SELECT/INSERT/UPDATE/DELETE/CREATE templates, alter DDL, indexes, foreign keys, rename, truncate, and drop. Database menus add create table/view/routine shortcuts plus truncate and empty database. Tabs you leave open come back after a restart. No ribbon full of icons you never click.

Themes and shortcuts that stay out of your way

Pick Auto, Light, Dark, or TabulaSQL Classic. Themes, AI settings, keyboard shortcuts, and Safe Lock live as compact icons in the top-right corner. The app is local-first: no account, no telemetry, credentials stay on disk you control.

Theme picker

Four themes with live swatches. Switch without restarting from the top-right controls.

Safe Lock for production

Flip the lock icon when you are on a live server. Saves, inserts, deletes, and duplicates ask you to confirm the SQL first. Turn it off for everyday local work.

Keyboard shortcuts

Run, explain, refresh, filter, edit cells, close dialogs. The cheatsheet is one click away from the top-right corner.

Try it yourself. It's free

macOS, Windows, and Linux. Built for MySQL, MariaDB, PostgreSQL & SQLite. MIT licensed. No trial, no “pro” tier, no account.