Skip to content
Monghoul
Free

A SQLite IDE that opens your database file as it is

Monghoul is a desktop SQLite IDE for Windows, macOS and Linux. Open a .db, .sqlite or .sqlite3 file, with no server. Values show as SQLite stored them, every 64-bit integer exact and a BLOB as bytes. Stop ends a statement at once, because it ends the background process that runs it.

Download Monghoul Read the SQLite docs
SQLite · A file opens like a server, with the same grid and draft
A SQLite Browse draft whose rows hold an INTEGER past 2^53 kept exact, a REAL, NULL, a long TEXT and a BLOB shown as bytes
Fig 01 Results · SQLite values as stored: an exact 64-bit integer, a REAL, a BLOB as bytes
A SQLite result with a changed status and a deleted row staged; Review Changes lists both as one table and says they apply in one transaction
SQLite · Staged in the grid, applied in one transaction

Does it keep large integers and BLOBs exact?

Yes. A value shows as SQLite stored it, because a SQLite column can hold a value of any type: a 64-bit integer keeps every digit, a REAL shows its shortest exact text and a BLOB shows as bytes. Export writes them whole too.

Can I see the query plan as a tree?

Explain shows EXPLAIN QUERY PLAN as a plan tree, with each step in plain words: a full scan, a search by the row ID, a sort. It never runs the statement.

EXPLAIN QUERY PLAN of a SQLite join as a tree: a full scan, a search by row ID and a sort, each in plain words
Fig 02 Explain · EXPLAIN QUERY PLAN as a tree, and the statement never runs

How do grid edits stay safe with no row version?

SQLite keeps no row version, so Monghoul reads each row in full and checks it again before it writes. A row that another program changed stops the whole batch, and nothing is written. Every change of a batch is applied in one transaction.

Which parameter forms does it read?

?, ?1, :name, @name and $name. The Query parameters strip has a value for each one; a plain number binds as a number, and anything else as text. A statement that mixes named and numbered parameters is refused.

A SQLite draft with named and numbered placeholders and the Query parameters strip: a saved value, a NULL and an empty field
Fig 03 Parameters · ?, ?1, :name, @name and $name each get a field

Does it open a table with no primary key for editing?

Browse of a table with no primary key reads rowid, *, so its rows can still be edited by their row ID. A double-click on a table or a view opens a draft with SELECT * FROM "name" LIMIT 100 and runs it once.

Connecting to SQLite

  • A SQLite database file on this computer: .db, .sqlite, .sqlite3 or .db3.
  • The file always comes from the system’s file dialog: Open file for a database, or New file for an empty one made when you save.
  • Test Connection opens the file and says the SQLite version and the file size.
  • Read-only access mode, a query timeout and a result cap, as for the other SQL engines.
  • Up to four background processes read a file for each connection; a fifth query waits for a slot.

What it does not do on SQLite

  • ATTACH and DETACH never run: a connection reads its own file only.
  • load_extension(), VACUUM INTO and a PRAGMA that changes how the file opens are refused.
  • No Cluster Monitor, no Manual commit and no database filter.
  • Completion offers the file’s tables, and the columns of the table a draft browses.

Shared with the other engines

The same windows as on the other engines, with SQLite's words and limits. Compare all five.

SQLite questions

Can an AI assistant see the path of my SQLite file?

No. A statement that would read it, such as `PRAGMA database_list`, is refused, and a result that holds the path shows `<file>` in its place to the assistant. The operation log names the connection, never the path.

Can I create a new empty SQLite database?

Yes. New file picks a name, and Monghoul makes the empty database when you save the connection. A save that the Free connection limit refuses makes no file.

Does Import keep my foreign keys safe?

Clear table, then insert is off when the clear would delete or change rows of other tables through ON DELETE CASCADE, SET NULL or SET DEFAULT. Each batch of 500 rows is one transaction.

Does the Database Map work on a SQLite file?

Yes. A declared foreign key is a Verified line, and other lines come from column names. SQLite has unique keys, so a Scan can make a Likely line Verified. Its one finding is a foreign key that no index leads with.

Can I run a script of several statements on the file?

Yes. Run all statements (Alt+X) runs up to 200 statements in order, and BEGIN and COMMIT may group them into one transaction. Filter by This Value on a result cell writes the condition into the statement, as a `?n` or `:name` parameter.

Point it at your SQLite database

43 MB installer. Free for 8 connections, and a 14-day Pro trial with no card.

Download Monghoul