Nothing assumed9 lessons72 min of readingFree, no sign-up to read
A first course in data for people who have never written a query. You will learn SELECT and WHERE, how to reason about joins instead of memorising diagrams, GROUP BY, the NULL rules that quietly break counts, what an index actually does, how to clean real exported data without destroying it, and how to tell a number that is technically correct from a number that answers the question you were asked. It ends with the part nobody teaches: how to get SQL out of an AI without being confidently misled.
Start the first lesson- When a spreadsheet stops workingA database stores each fact once and enforces rules; a spreadsheet stores copies and enforces nothing.
- SELECT and WHERE: asking for rowsWHERE tests one row at a time, in isolation; it never sees the other rows that share a customer.
- Joins: reason about them, do not memorise themA join emits one row per match; zero matches and two matches are where every join bug lives.
- GROUP BY: making piles and asking about each oneEach aggregate answers a question about one pile, and COUNT(*) and COUNT(DISTINCT) are different questions.
- NULL, and why your counts are wrongWHERE keeps only rows where the test is true, and every comparison with NULL is unknown.
- Why a query is slow, and what an index doesAn index lets the database skip rows; anything that hides a column's raw value takes that ability away.
- Cleaning real data without destroying itKeep the raw data, clean it in a query you can re-run, and count every row you drop.
- A right number and a useful number are not the sameA correct query answers the question you typed, which is rarely the question you were asked.
- Asking an AI for SQL without being lied toPaste your schema, ask for assumptions first, and check the number against something you already know.
No ads. No data sale. No public scores on people. Ever.
© 2026 Addaly