Watch a SQL Query run.
QueryTrace plays your statement over live tables in the browser and shows what each clause did to the rows.
Every clause shows its work.
Joined

Filtered

Grouped

Traced

Nineteen lessons.
Each lesson is one query over a small fictional dataset. Open one and step through it.
Foundations
1. Choose result columnsHarbor ferry routes2. Filter individual rows with WHERECoastal research survey3. Combine conditionsHarbor ferry routes4. Calculate and sortHarbor ferry routes5. Match patterns and rangesIndependent film festival6. Keep unique results with DISTINCTIndependent film festival7. Label a combined text fieldNight observatory8. Summarize a set of rowsCoastal research survey9. Find missing valuesCoastal research survey10. Aggregate within groupsIndependent film festival11. Filter completed groups with HAVINGOrchard plot mapCombining data
12. Match related rows with JOINIndependent film festival13. Match tables through WHERENight observatory14. Preserve unmatched rowsIndependent film festival15. Trace a complete query pipelineIndependent film festival16. Chain multiple relationshipsCoastal research survey17. Give one table two rolesOrchard plot map18. Stack compatible resultsIndependent film festival19. Feed one query into anotherHarbor ferry routesYour own schema works too.
Paste the CREATE TABLE statements from your database. Exports from PostgreSQL and SQL Server paste in as they are, and so do MySQL and Oracle.
Everything runs on SQLite compiled to WebAssembly, inside the tab. Nothing you type is sent anywhere.

The tracer opens on a four-table join you can step through right now.



