SQL Practice Datasets
Free SQL practice datasets you can download or query straight away. Each one is small enough to understand quickly and realistic enough to practice actual reporting work. Take the CSV files, take the single.sql file and load it into your own database, or run queries against them here in the browser.
Everything here is free. No account, no email, no attribution required, and the data is invented rather than scraped, so it is free to use for any purpose including commercially.
Garden Shop
Orders, products, inventory, suppliers, and customers for store-operations SQL practice.
Free CSV + .sql downloadExplore dataset →Movie Rentals
Movies, customers, and rental history for compact join, aggregate, and NULL practice.
Free CSV + .sql downloadExplore dataset →Website Analytics
Sessions, pageviews, events, users, and campaigns for funnel and attribution practice.
Free CSV + .sql downloadExplore dataset →Employee Directory
Departments, employees, projects, and assignments, with a reporting line for self-join practice.
Free CSV + .sql downloadExplore dataset →How to use these datasets
Start with the guided lessons when you want a prompt, hints, and result grading. Use the playground when you want a blank editor and a question of your own. Download the files when you want the data in your own database. All three flows read the same CSVs, so queries you learn in a lesson transfer directly into freeform practice.
Start with table shape
When you open a dataset, read the table descriptions first, then run a few row counts. That tells you which tables are lookup lists, which tables contain repeated activity, and where joins can duplicate rows.
Move from questions to reports
Each dataset guide includes starter questions that map to common SQL reports: monthly revenue, genre scorecards, inventory checks, channel attribution, conversion rates, and Top-N lists.
Take the data with you
Every dataset guide has free download links: the raw CSV files, plus a single .sql file of CREATE TABLE and INSERT statements that loads into PostgreSQL, MySQL, SQLite, DuckDB, or SQL Server without edits.