DB Client
Blyck’s DB client handles five engines — SQLite · Oracle · PostgreSQL · MSSQL · MySQL — through the same interface. Without a separate DB tool, you can connect, explore schemas, write SQL, analyze results, edit data, export, and generate SQL from natural language, all in one window.
Supported engines & connecting
Section titled “Supported engines & connecting”Pick an engine from the new tab menu (+) or click a saved connection.
| Engine | Required input | Default port | Notes |
|---|---|---|---|
| SQLite | File path | — | Auto-switches to read-only if over 256MB or locked |
| Oracle | Host · Port · Service Name · User · Password | 1521 | Thin by default → auto-falls back to Thick on failure |
| PostgreSQL | Host · Port · Database · User · Password | 5432 | Schema and SSL options |
| MSSQL | Host (server\instance) · Port · Database · User · Password | 1433 | SQL auth only (Windows integrated auth not supported) |
| MySQL | Host · Port · Database · User · Password | 3306 | SSL option |
Oracle Thin / Thick mode
Section titled “Oracle Thin / Thick mode”Enabling the Force Thick option in the connection dialog always connects in Thick mode. By default it tries Thin first and falls back to Thick on failure; after connecting, the header shows Oracle connected (Thin) or Oracle connected (Thick). When using Thick mode you must enter the path to the 64-bit Oracle Instant Client in the dialog.
Saved connections & password autofill
Section titled “Saved connections & password autofill”Entering a save name in the connection dialog stores the connection details permanently. The password is protected with OS encryption (Windows DPAPI / macOS Keychain), and from then on you connect instantly with one click, no password entry needed.
Schema tree
Section titled “Schema tree”Once connected, the left tree shows TABLES / VIEWS / INDEXES / TRIGGERS / ROUTINES sections.
- Expanding tables · views shows the column list (name · type · PK icon), and double-clicking instantly runs a first-200-rows query in the SQL editor.
- Double-clicking indexes · triggers · routines loads their DDL into the editor.
- You can drag table/column names from the tree into the SQL editor to insert them.
Tree search
Section titled “Tree search”Use the top search bar, choosing the name / column / both scope. A column search auto-expands the matching table, and the header shows an N / total count.
Right-click menu (table)
Section titled “Right-click menu (table)”| Item | Action |
|---|---|
| Detailed view | Column type · NULL allowance · default value · index info |
| Select first 200 rows | Auto-runs the query matching the engine dialect (LIMIT / TOP / ROWNUM) |
| View DDL | Loads the CREATE statement into the editor |
| Analyze column | NULL ratio · distinct count · mode · numeric stats (min/max/avg, sample-based) |
After you run a DDL query, the tree auto-reindexes in the background 500ms later to reflect the change. To refresh manually, click the ↻ button in the header.
SQL editor
Section titled “SQL editor”Open the editor by double-clicking a table or via the New Query button in the tree header.
Left rail
Section titled “Left rail”| Button | Action |
|---|---|
| ✨ | Toggle the natural-language→SQL input bar |
| ▶ | Run query (Ctrl+Enter) |
| ■ | Stop execution (active only while running) |
| + | Add a SQL tab |
At the bottom of the rail, the current panel’s SQL tabs are listed for quick switching.
Toolbar
Section titled “Toolbar”DB name — SQL ▾: Connection-switch dropdown- Autocommit checkbox / Commit / Rollback
- AI (
Ctrl+I) : Cell AI (analyze the grid selection) - History / Snippets / Export ▾ / Format / Close (
Esc)
Execution & autocompletion
Section titled “Execution & autocompletion”- Run with
Ctrl+Enteror the ▶ button. - Running with text selected executes only the selection.
- Table/column names of the connected DB are autocompleted.
- The Format button runs the built-in formatter, breaking lines before SQL clauses.
- After running DML, the status line shows
Done — N rows changed · Xmsor a red error.
Transactions
Section titled “Transactions”Turning the autocommit checkbox OFF switches to manual transaction mode. Running DML isn’t committed immediately and stays in the ● Uncommitted state. Finalize with the Commit button or undo with the Rollback button.
Server-side query cancellation (■ Stop)
Section titled “Server-side query cancellation (■ Stop)”Clicking the ■ button cancels in two stages.
- Soft cancel (instant) — The UI returns immediately and invalidates the token to discard the results. The status line shows
Execution stopped. - Server-side cancel (best-effort) — Sends a cancel signal to the engine. The query stops when the DB server recognizes it at a checkpoint.
| Engine | Cancellation method |
|---|---|
| Oracle | connection.break() → returns ORA-01013 |
| MSSQL | request.cancel() → TDS Attention packet |
| PostgreSQL | pg_cancel_backend(pid) over a separate connection — keeps the existing connection |
| MySQL | KILL QUERY threadId over a separate connection — keeps the existing connection |
| SQLite | No server cancel — soft cancel only (immediate stop) |
Switching connections
Section titled “Switching connections”Clicking the SQL editor title DB name — SQL ▾ shows a list of all currently open DB connections, with ✓ marking the current one. Selecting a connection switches only the execution target DB while keeping the editor’s SQL unchanged.
Result grid
Section titled “Result grid”Results are shown in a virtual-scroll grid, so you can smoothly browse hundreds of thousands of rows.
- The row-number (
#) column stays pinned even when scrolling horizontally. Clicking it opens the row detail viewer. - The status bar shows the
N rows · Xmsexecution info. - NULL is shown distinctly as
NULL(distinguished from an empty string). - Column width can be adjusted by dragging.
Sort · filter
Section titled “Sort · filter”- Sort: Clicking a column header toggles ascending (▲) · descending (▼).
- Filter: Typing text in the top field filters in real time across all columns by partial match (filters only displayed rows, no DB re-query).
Beyond 5,000 rows
Section titled “Beyond 5,000 rows”It shows 5,000 rows by default; beyond that, the Load next 5,000 button accumulates with OFFSET/FETCH loading.
Cell selection · copy
Section titled “Cell selection · copy”Drag to select a rectangular range, and copy with Export ▾ → Clipboard (TSV) to paste straight into Excel. Use Shift+double-click to view a cell’s full value in the viewer.
Editing cells directly → UPDATE
Section titled “Editing cells directly → UPDATE”Cell editing is enabled only when the result is a single-table SELECT that includes the PK column.
- Double-click a cell to edit its value.
- Clicking the Commit button adds an
UPDATE … WHERE PK=…statement to the editor. - Run it with
Ctrl+Enterto apply.
The executed change is recorded in the change history (Ctrl+Shift+H) like any other DML and can be reverted.
Adding new rows · copying rows → INSERT
Section titled “Adding new rows · copying rows → INSERT”Use the + Row or Copy Row button in the result grid toolbar for staged INSERTs.
| Button | Action |
|---|---|
| + Row | Add an empty row (left blank means NULL) |
| Copy Row | Add a new row duplicating all column values of the selected row |
Add rows, edit the cells, then click the Save button. On save, autocommit is temporarily turned OFF and the INSERT is run, so you then finalize with Commit or undo with Rollback.
Large-scale export (CSV · Excel)
Section titled “Large-scale export (CSV · Excel)”Choose Export ▾ → CSV or Excel.
- Streaming approach: The main process streams directly to disk, so even millions of rows are saved without memory worries.
- The progress modal shows
N / total rows (X%)and you can stop midway with the Cancel button. - CSV: Includes a UTF-8 BOM (so Korean displays correctly in Excel).
- Excel (.xls): 1,048,575-row limit.
Natural language → SQL (✨)
Section titled “Natural language → SQL (✨)”Toggle the natural-language input bar with the ✨ button on the SQL editor’s left rail.
▸ Top 5 customers by sales this month▸ Show the daily count of users who signed up last weekOperation order: Keyword analysis → score the entire schema of the active connection → select relevant tables/columns → generate SQL (each step shows progress status and elapsed time). The generated SQL is inserted below the cursor line (it does NOT overwrite existing content). You can undo with Ctrl+Z, and you can also stop during generation with the Cancel button.
Since the generated SQL lands in the editor, you review and run it yourself — it is not run automatically.
SQL snippets
Section titled “SQL snippets”Save frequently used SQL to recall it quickly.
- Click the toolbar Snippets button → Save current SQL (enter a name; if blank, the start of the SQL is used automatically).
- Clicking an item loads it into the editor; ✕ deletes it.
- Snippets are stored globally and usable from any DB editor.
Query history
Section titled “Query history”Clicking the toolbar History button shows successful queries in newest-first order (duplicates auto-removed). Clicking an item loads it into the editor. History is stored in userData/db-history.json.
Grid cell AI (Ctrl+I)
Section titled “Grid cell AI (Ctrl+I)”Select a cell range in the grid and press Ctrl+I or click the toolbar AI button to ask the AI about the selected data as context.
▸ Analyze the outliers among these▸ Make an UPDATE query from this data▸ Why does this column have a high NULL ratio?It analyzes using the selected values · table name · executed SQL · PK info · engine type as context. If over 200 rows, only the first 200 are passed.
Column analysis
Section titled “Column analysis”Right-click the tree → Analyze column to see the table’s actual data statistics, sample-based.
status column — NULL 2.3% · Distinct 4 (active, inactive, pending, blocked) · Mode active 87%amount column — NULL 0% · min 100 · max 9,800,000 · avg 452,000It provides NULL ratio · distinct count · enum candidates, and for numeric types, min/max/avg. Use it to understand column characteristics before writing queries or to inform index design.
Dangerous query protection
Section titled “Dangerous query protection”Queries you run directly with Ctrl+Enter in the SQL editor run immediately without confirmation (for power users). In return, all DDL/DML is auto-recorded in the change history and can be reverted (see below). A confirmation dialog appears before running only in these two cases.
| Path | Behavior |
|---|---|
SQL run by the AI (db_query tool) | Reads are automatic; writes/destructive (DROP/TRUNCATE/DELETE without WHERE, etc.) get a confirmation dialog. prod-labeled connections are escalated by one step |
| SQL code block ▶ Run (AI replies · code editor code lens) | DROP/DELETE/UPDATE/TRUNCATE/ALTER/GRANT/REVOKE, etc. require confirmation with a query preview |
Operations like right-click → DROP TABLE… in the schema tree go through a strong confirmation that requires typing the table name to run.
Backup-based rollback
Section titled “Backup-based rollback”When DDL/DML runs, the pre-change data is automatically backed up so both human and AI runs can be reverted.
- Small (≤1,000 rows, single table with PK): Pre-change rows are kept as JSON in the internal history DB.
- Large / complex / no PK: A backup table (
blyck_bak_…) is created in the target DB and kept, then auto-deleted after revert. - Some DDL such as
DROP/TRUNCATEhas no reverse SQL and is marked as a non-revertible item.
In the change history (Ctrl+Shift+H), select an item and revert it. Even a large UPDATE · DELETE without WHERE can be restored from backup data.
Together with AI Chat
Section titled “Together with AI Chat”AI Chat calls DB tools directly.
▸ Find duplicate emails in this table▸ Show the orders schema and recommend indexes▸ Top 10 customers with high order-cancellation rates last monthOperation order: Check schema (db_schema) → analyze columns if needed → write/run the query (db_query) → self-correct on failure. Write queries always pass through the safety mechanisms above (confirmation dialog).
Links with other docs
Section titled “Links with other docs”| Feature | Doc |
|---|---|
| Link a DB to the SQL editor for SQL autocompletion in code | Code Editor |
| DB schema/results via RAG search | Search (RAG) |
| Change history · revert DML | Change History · Git |
| Automate DB work with AI Chat | AI Chat |
I get an Oracle NJS-116 error.
This is a password-verifier method the Thin driver doesn’t support. In the connection dialog, enable Force Thick and enter the 64-bit Instant Client path.
I pressed ■ Stop but the query won’t stop.
Server-side cancellation is best-effort and is recognized at the next checkpoint. Wait a moment for heavy aggregation queries. SQLite has no server stage, so it stops immediately.
The app dies during a large query.
Instead of the grid clipboard copy, use Export ▾ (disk streaming). Excel has a 1-million-row limit.
Korean is garbled when I open a CSV in Excel.
CSV is saved with a UTF-8 BOM. Use Excel’s Get Data → set encoding to 65001 UTF-8, or paste directly via Clipboard (TSV).
Cell editing doesn’t work.
It’s enabled only for single-table SELECT results that include a PK column. JOIN · GROUP BY · UNION · DISTINCT or view results can’t be edited.
Natural-language→SQL uses the wrong table.
Rebuild the index and register business terms · table mappings in the 📒 Glossary to improve accuracy.
The tree is empty right after connecting.
Schema indexing can take a few seconds after a successful connection. Try clicking the header ↻ refresh button. During an Oracle Thick fallback, completing the connection can take longer.