SQL Terminal Simulator
Practice SQL in an interactive browser terminal. Learn SELECT, WHERE, ORDER BY, DISTINCT, aggregates, GROUP BY, HAVING, JOINs, subqueries, and window functions against a small e-commerce schema, with single-table queries evaluated live and verified Postgres output.
Category: Database
What You Will Learn
- Write SELECT queries and project only the columns you need
- Filter rows with WHERE using comparison operators and LIKE
- Sort and cap results with ORDER BY, DESC, and LIMIT
- Summarise data with count, sum, avg, min, max, GROUP BY, and HAVING
- Combine tables with JOINs and keep unmatched rows with LEFT JOIN
- Change data with INSERT, UPDATE, and DELETE and read their command tags
- Compare rows against a subquery and name subqueries with WITH (CTEs)
- Rank rows within groups using window functions
- Test yourself in Challenge mode by writing queries from a plain-English prompt
Topics covered: sql, postgres, postgresql, database, queries, select, joins, aggregates, terminal, backend, educational, interactive
// simulator
SQL Terminal Simulator
Practice SQL in an interactive browser terminal. Learn SELECT, WHERE, ORDER BY, DISTINCT, aggregates, GROUP BY, HAVING, JOINs, subqueries, and window functions against a small e-commerce schema, with single-table queries evaluated live and verified Postgres output.
// sql playground
SQL Terminal Simulator
Practice SQL against a small e-commerce schema in a safe browser terminal. Single-table queries run live; the guided join, subquery, window, and CTE lessons return real Postgres output. Learn SELECT, WHERE, ORDER BY, DISTINCT, aggregates, GROUP BY, HAVING, JOINs, LEFT JOIN, INSERT/UPDATE/DELETE, subqueries, window functions, and CTEs.
4
Tables
50
Rows
13
Lessons
Return every column and row from the customers table.
Welcome to the SQL terminal playground (Postgres-style).
Type "help", run "\dt" to see the tables, or follow the current task above.
customers
- customer_idint
- nametext
- countrytext
- signup_datedate
products
- product_idint
- nametext
- categorytext
- pricenumeric
orders
- order_idint
- customer_idint
- order_datedate
- statustext
order_items
- item_idint
- order_idint
- product_idint
- quantityint
SELECT columns to read
WHERE filters rows
GROUP BY + aggregates summarise
HAVING filters groups
ORDER BY / LIMIT sort and cap
JOIN / LEFT JOIN combine tables
INSERT / UPDATE / DELETE change data
WITH names a subquery (CTE)
About this SQL simulator
What you'll learn
- How SELECT reads rows and how to project specific columns
- How WHERE filters rows with operators like =, <, >, <>, and LIKE
- How ORDER BY, ASC/DESC, and LIMIT shape a result set
- How DISTINCT and the aggregates count, sum, avg, min, and max summarise data
- How GROUP BY buckets rows and HAVING filters those groups
- How JOINs, LEFT JOINs, subqueries, and window functions work across tables
- How INSERT, UPDATE, and DELETE change data, and how CTEs (WITH) name a subquery
Key statements covered
- Read: SELECT, SELECT DISTINCT, column projection, table.column prefixes, AS aliases
- Filter: WHERE with AND/OR, comparison operators, LIKE, and numeric vs string literals
- Aggregate: count, sum, avg, min, max, round, GROUP BY, HAVING
- Shape: ORDER BY, LIMIT
- Relate: JOIN, LEFT JOIN, subqueries, WITH (CTEs), and rank() window functions
- Write: INSERT, UPDATE, DELETE and their psql command tags
How the playground runs your queries
Single-table SELECT queries are evaluated live in your browser against a small e-commerce schema (customers, products, orders, order_items). The guided join, subquery, and window lessons return output captured from a real PostgreSQL instance, so the results you see match what Postgres actually returns. Nothing is sent to a server, so you can experiment freely.
Practice on real Postgres
A simulator is a great place to build intuition, but running these queries against a real database makes them stick. You can spin up a free Postgres in seconds with Neon and paste the same queries in to run them for real, or run managed PostgreSQL on DigitalOcean (new accounts get $200 in credits). Load a table or two, then re-run the lessons here against your own data.
Related reading
Once the queries click, these deep dives cover the schema and query patterns that keep a Postgres database fast as it grows:
- Stop Using Random UUIDs as Primary Keys — why random UUIDs hurt index and primary-key performance, and what to use instead.
- Stop Paginating With OFFSET — how keyset pagination beats LIMIT/OFFSET as tables get large.
Why learn SQL this way?
- SQL clicks fastest when you can change a query and immediately see the rows change.
- The same handful of clauses (SELECT, WHERE, GROUP BY, JOIN) cover most day-to-day queries.
- Reading real result sets builds the instinct you need for reports, debugging, and interviews.
Try next
// simulator
PostgreSQL Terminal Simulator
Practice the psql tool and Postgres engine in an interactive browser terminal. Explore with meta-commands, read real EXPLAIN plans, add an index to turn a sequential scan into a bitmap index scan, and use BEGIN and ROLLBACK to make changes safe, all against a small e-commerce database with verified PostgreSQL output.
// simulator
MongoDB Terminal Simulator
Practice MongoDB queries in an interactive browser terminal. Learn find and projections, query operators like $lt, $gt, and $in, sort, skip, limit, countDocuments, insert, update, delete, and the aggregation pipeline with $match, $group, and $sort, against a small e-commerce dataset that runs live in your browser.
// simulator
Database Indexing Simulator
Learn how database indexes work with an interactive simulator. See the difference between full table scans and index seeks, understand B-tree structure, and learn when to create indexes.