Skip to content
A workshop for practical SQL

Learn SQL by actually writing it.

Short lessons, immediate practice. Write real queries against realistic data right in your browser. No sign-up, nothing to install, and your progress is saved in this browser. Every exercise runs in the same workbench as the playground.

Runs in your browser Powered by DuckDB 127 free lessons
garden_shop · workbench.sql
DuckDB
select c.category_name,
       count(*) as products,
       round(avg(p.price), 2) as avg_price
from products as p
join categories as c on c.category_id = p.category_id
group by c.category_name
order by products desc, c.category_name
Runs DuckDB in your browser. Your query is not sent to a server.

Stuck on a query right now?

How it works

Three steps, from your first query to a real report.

1

Pick a lesson

Follow the beginner path from your first SELECT onward. Each lesson is short and focused.

2

Write a real query

Type SQL in the in-browser workbench and run it against realistic sample data.

3

See results, get graded

Queries run in your browser, so there is no server to wait on. Each lesson checks your result and tells you what's off.

Practice data

Realistic data to practice on, free to download.

Small teaching schemas where you can check every row by eye, and larger analytical datasets where the aggregate is the only answer you get. Query them here, or take the files into your own database.

Browse all SQL practice datasets →

Every dataset is invented rather than scraped, so it is free for any use, including commercially. See the dataset license. Prefer someone else's data? There is a list of free SQL datasets and sample databases elsewhere.

Start here

The beginner path is one clear line.

127 hands-on lessons across 22 chapters, grouped into simple tracks. Start at the top, with no guessing what comes next.

Begin Chapter 1 →