SQLite 3.54 · wasm

SQL playground

A real SQLite engine in the tab: build a schema, insert rows, query them, and read the error verbatim when a statement is wrong.

0 characters

The database is created in memory in this tab. Nothing is uploaded, and nothing is written to disk.

Short answer: write statements and press Run. Each SELECT returns its own table, each write reports the row count, and a bad statement shows SQLite’s own message.

What a real engine gives you

Boundaries

One connection, in memory, no extensions. FTS5 and RTREE are not compiled into this build, and there is no file to reopen later. Formatting is a separate job — theSQL formatter handles that without executing anything.

SQL questions

Which SQL dialect is this?

SQLite 3.54, the same engine that ships inside phones and browsers. It is close to standard SQL but not identical: no RIGHT JOIN before 3.39, no stored procedures, and types are affinities rather than strict types. The page runs the real engine, so what works here works in SQLite.

Is my database saved?

No. It is created in memory for this tab, so a reload starts empty and nothing is written to disk. That is deliberate: a saved database would need persistence and a clear statement about where the data sits.

Why can one query return many result tables?

Because you can run several statements at once. Each SELECT gets its own result table, and INSERT/UPDATE/DELETE report how many rows changed. An error on one statement does not silently stop the others — it is listed with the statement that caused it.

What happens if a query runs too long?

SQLite’s progress handler is not exposed by the WebAssembly module, so a runaway recursive query can hold the tab. Reload the page to recover; the in-memory database is gone either way.

Related tools