SELECT
Choose the columns you need.
SELECT user_id, country, created_at
FROM users;WHERE
Filter rows.
SELECT user_id, country
FROM users
WHERE country = 'IN';Common operators
=,!=,>,<,>=,<=IN (...)BETWEEN a AND bLIKE '%text%'IS NULL/IS NOT NULL
SELECT user_id, created_at, plan
FROM users
WHERE country IN ('IN', 'US')
AND plan != 'free'
AND created_at >= '2025-01-01';ORDER BY
SELECT user_id, created_at
FROM users
ORDER BY created_at DESC
LIMIT 20;LIMIT
Limits are great for exploration.
SELECT *
FROM orders
LIMIT 50;The order SQL actually runs in
This trips up almost every beginner: SQL is not executed top-to-bottom in the order you type it. The database picks the table first, filters rows, then figures out which columns to show, and sorts/limits last.
flowchart TD A["FROM users"] --> B["WHERE country = 'IN'"] B --> C["SELECT user_id, country"] C --> D["ORDER BY created_at DESC"] D --> E["LIMIT 20"]
That's why you can filter on a column in WHERE that you never mention in SELECT — the
engine already resolved WHERE against the full table before it trimmed the column list.
Check your understanding
In what order does the database logically process a query?
The engine picks the table, filters rows, chooses columns, then sorts and limits last.
Show answer
B — FROM, WHERE, SELECT, ORDER BY, LIMIT — The engine picks the table, filters rows, chooses columns, then sorts and limits last.
Which query returns the 20 newest users?
DESC sorts newest first, and LIMIT 20 keeps the first twenty rows.
Show answer
A — ORDER BY created_at DESC LIMIT 20 — DESC sorts newest first, and LIMIT 20 keeps the first twenty rows.
Which operator tests for missing values?
NULL needs IS NULL or IS NOT NULL. A normal comparison with = never matches.
Show answer
B — IS NULL — NULL needs IS NULL or IS NOT NULL. A normal comparison with = never matches.
Why can you filter in WHERE on a column that is not in SELECT?
WHERE is resolved before the column list is trimmed.
Show answer
A — WHERE runs before SELECT, against the full table — WHERE is resolved before the column list is trimmed.
🧪 Try It Yourself
Exercise 1 – SELECT specific columns
Tab indents. Press Escape, then Tab, to leave the editor. Control plus Enter runs the code; Control plus Shift plus Enter submits it.
Press Run to see what your code prints.Exercise 2 – WHERE with multiple conditions
Tab indents. Press Escape, then Tab, to leave the editor. Control plus Enter runs the code; Control plus Shift plus Enter submits it.
Press Run to see what your code prints.Exercise 3 – ORDER BY and LIMIT together
Tab indents. Press Escape, then Tab, to leave the editor. Control plus Enter runs the code; Control plus Shift plus Enter submits it.
Press Run to see what your code prints.Next
Once you're comfortable filtering and sorting single tables, move on to Aggregations (COUNT, SUM, AVG) and GROUP BY to start computing metrics instead of just listing rows.