An 8-stage path
Learn step by step through SELECT, WHERE, aggregation and GROUP BY, JOIN, subqueries, CTEs and window functions, with 64 query types and 1,792 core missions.
From SELECT to window functions, read eight stages of concepts and run them right away. A real SQLite engine on your phone returns the results, and three data sets confirm your answer.
iOS / Android · 20 languages
Store download links will open after release.
Open today's query on the home screen, or pick a stage and concept from data packs in 28 topics.
Preview the tables, write your own query and run it. The result table appears right away.
Check your answer to see how it differs from the expected result. Concepts you solve add up in your progress.
Learn step by step through SELECT, WHERE, aggregation and GROUP BY, JOIN, subqueries, CTEs and window functions, with 64 query types and 1,792 core missions.
Cafés, bookshops, travel, libraries, campsites and more. Each topic has five related tables, including real-world traps like NULLs and ties.
Answers are checked by the result's column order, values, NULLs and duplicates, not the SQL text, then verified again on two hidden data sets. If it's wrong, you see example rows that differ.
Generate new data to apply the same concept to different values and relationships. Hints, explanations and learning with the solution are there when you need them.
Create a blank or sample database and run CREATE, INSERT, UPDATE, transactions, triggers and indexes yourself. Includes 24 SQL pattern examples and Undo last change.
Follow your device language or choose one in Settings. Screens, missions, hints and error guidance appear in your language, while SQL and data values stay the same in every language.
No account needed. Your progress, the SQL you write and the databases you create are stored only in the app's storage on your device and are never sent to us or to advertisers. The Android app shows a Google AdMob banner ad at the bottom of the screen; the Privacy Policy explains the ad data Google processes.
Haru SQL's missions and data are fictional and made for learning SQL; amounts are learning points. Queries run with SQLite syntax, so function names or results may differ in other databases.