Title: Free SQL Practice Online — Playground & Exercises | SqlInt
Open Graph Title: Free SQL Practice Online — Playground & Exercises
X Title: Free SQL Practice Online — Playground & Exercises
Description: SQL practice online, free — 49 guided exercises with hints and solutions (SELECT, JOINs, GROUP BY, CTEs). No signup. Query your own CSV/Excel too.
Open Graph Description: Practice SQL online free in a browser playground with 49 guided exercises, hints, and solutions. No signup, no install. Query your own CSV/Excel too.
X Description: Run real SQL in your browser, free — 49 guided exercises with solutions. No signup required. Own CSV/Excel supported.
Keywords:
Opengraph URL: https://sqlint.com/sql-practice
Domain: sqlint.com
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://sqlint.com/#organization","name":"SqlInt","url":"https://sqlint.com","logo":"https://sqlint.com/og-image.jpg","email":"support.sqlint@gmail.com","description":"SqlInt is a browser-based SQL practice and interview-preparation platform that also provides free client-side SQL tools for developers.","disambiguatingDescription":"SqlInt (sqlint.com) is a browser-based SQL practice and interview-preparation website with free client-side SQL tools - a web platform, not a command-line utility.","contactPoint":{"@type":"ContactPoint","contactType":"customer support","email":"support.sqlint@gmail.com","availableLanguage":["en"]},"subjectOf":[{"@type":"WebPage","url":"https://sqlint.com/about","name":"About SqlInt"}],"sameAs":[]},{"@type":"WebSite","@id":"https://sqlint.com/#website","url":"https://sqlint.com","name":"SqlInt","description":"SqlInt is a browser-based SQL practice and interview-preparation platform that also provides free client-side SQL tools for developers.","publisher":{"@id":"https://sqlint.com/#organization"}}]}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://sqlint.com"},{"@type":"ListItem","position":2,"name":"SQL Practice","item":"https://sqlint.com/sql-practice"}]}
{"@context":"https://schema.org","@type":"HowTo","name":"How to practice SQL online for free with SqlInt","description":"Run real SQL in your browser — no signup, no install, no setup.","step":[{"@type":"HowToStep","position":1,"name":"Pick a sample database","text":"Choose a sample database — Employees, ShopCo, or Fintech — schema and data load instantly in your browser."},{"@type":"HowToStep","position":2,"name":"Write a query","text":"Type SQL into the editor, or start from an exercise's starter query."},{"@type":"HowToStep","position":3,"name":"Run it","text":"Press Run (or Ctrl+Enter) — the query executes on a real SQLite engine via WebAssembly and the result table appears instantly."},{"@type":"HowToStep","position":4,"name":"Check your answer","text":"For exercises, press Check answer — your result is compared to the reference solution and your solved progress is saved locally."},{"@type":"HowToStep","position":5,"name":"Optional: query your own data","text":"Upload a CSV or Excel file (up to 10 tables, 100,000 rows each) or build a table with CREATE TABLE — uploads become live SQLite tables in your browser and never leave your device."}]}
{"@context":"https://schema.org","@type":"ItemList","name":"Free SQL practice exercises","numberOfItems":49,"itemListElement":[{"@type":"ListItem","position":1,"name":"1. Select every employee (Beginner, SELECT)","url":"https://sqlint.com/sql-practice?exercise=1"},{"@type":"ListItem","position":2,"name":"2. Names and salaries only (Beginner, Projection)","url":"https://sqlint.com/sql-practice?exercise=2"},{"@type":"ListItem","position":3,"name":"3. High earners (Beginner, WHERE)","url":"https://sqlint.com/sql-practice?exercise=3"},{"@type":"ListItem","position":4,"name":"4. Top salaries first (Beginner, ORDER BY)","url":"https://sqlint.com/sql-practice?exercise=4"},{"@type":"ListItem","position":5,"name":"5. How many employees? (Beginner, Aggregation)","url":"https://sqlint.com/sql-practice?exercise=5"},{"@type":"ListItem","position":6,"name":"6. Average salary per department (Intermediate, GROUP BY)","url":"https://sqlint.com/sql-practice?exercise=6"},{"@type":"ListItem","position":7,"name":"7. Names starting with A (Intermediate, LIKE)","url":"https://sqlint.com/sql-practice?exercise=7"},{"@type":"ListItem","position":8,"name":"8. Departments with more than one employee (Intermediate, HAVING)","url":"https://sqlint.com/sql-practice?exercise=8"},{"@type":"ListItem","position":9,"name":"9. Shipped orders (Beginner, WHERE)","url":"https://sqlint.com/sql-practice?exercise=9"},{"@type":"ListItem","position":10,"name":"10. Unique order statuses (Beginner, DISTINCT)","url":"https://sqlint.com/sql-practice?exercise=10"},{"@type":"ListItem","position":11,"name":"11. Revenue per order (Intermediate, JOIN + SUM)","url":"https://sqlint.com/sql-practice?exercise=11"},{"@type":"ListItem","position":12,"name":"12. Repeat customers (Intermediate, JOIN + HAVING)","url":"https://sqlint.com/sql-practice?exercise=12"},{"@type":"ListItem","position":13,"name":"13. Top 3 customers by spend (Advanced, Multi-join + LIMIT)","url":"https://sqlint.com/sql-practice?exercise=13"},{"@type":"ListItem","position":14,"name":"14. Rank salaries within each department (Advanced, Window functions)","url":"https://sqlint.com/sql-practice?exercise=14"},{"@type":"ListItem","position":15,"name":"15. Who reports to whom (Advanced, Self join)","url":"https://sqlint.com/sql-practice?exercise=15"},{"@type":"ListItem","position":16,"name":"16. Top earner per department (Advanced, Subquery + window)","url":"https://sqlint.com/sql-practice?exercise=16"},{"@type":"ListItem","position":17,"name":"17. One account's transactions (Beginner, WHERE)","url":"https://sqlint.com/sql-practice?exercise=17"},{"@type":"ListItem","position":18,"name":"18. Transactions in March (Beginner, Date filtering)","url":"https://sqlint.com/sql-practice?exercise=18"},{"@type":"ListItem","position":19,"name":"19. Count transactions per category (Beginner, GROUP BY)","url":"https://sqlint.com/sql-practice?exercise=19"},{"@type":"ListItem","position":20,"name":"20. Largest single debit (Beginner, ORDER BY + LIMIT)","url":"https://sqlint.com/sql-practice?exercise=20"},{"@type":"ListItem","position":21,"name":"21. Inflow vs outflow (Intermediate, CASE)","url":"https://sqlint.com/sql-practice?exercise=21"},{"@type":"ListItem","position":22,"name":"22. Net flow per month (Intermediate, Date functions)","url":"https://sqlint.com/sql-practice?exercise=22"},{"@type":"ListItem","position":23,"name":"23. Uncategorized transactions (Intermediate, NULL handling)","url":"https://sqlint.com/sql-practice?exercise=23"},{"@type":"ListItem","position":24,"name":"24. Repeat merchants (Intermediate, HAVING)","url":"https://sqlint.com/sql-practice?exercise=24"},{"@type":"ListItem","position":25,"name":"25. Running balance per account (Advanced, Window functions)","url":"https://sqlint.com/sql-practice?exercise=25"},{"@type":"ListItem","position":26,"name":"26. Previous transaction amount (Advanced, LAG)","url":"https://sqlint.com/sql-practice?exercise=26"},{"@type":"ListItem","position":27,"name":"27. Accounts with no transactions (Advanced, NOT EXISTS)","url":"https://sqlint.com/sql-practice?exercise=27"},{"@type":"ListItem","position":28,"name":"28. Above your account's average (Advanced, Correlated subquery)","url":"https://sqlint.com/sql-practice?exercise=28"},{"@type":"ListItem","position":29,"name":"29. Hired in 2022 (Intermediate, Date functions)","url":"https://sqlint.com/sql-practice?exercise=29"},{"@type":"ListItem","position":30,"name":"30. Salary bands (Intermediate, CASE)","url":"https://sqlint.com/sql-practice?exercise=30"},{"@type":"ListItem","position":31,"name":"31. Uppercase names (Beginner, String functions)","url":"https://sqlint.com/sql-practice?exercise=31"},{"@type":"ListItem","position":32,"name":"32. Headcount by office location (Intermediate, JOIN + GROUP BY)","url":"https://sqlint.com/sql-practice?exercise=32"},{"@type":"ListItem","position":33,"name":"33. Second-highest salary (Advanced, Subquery)","url":"https://sqlint.com/sql-practice?exercise=33"},{"@type":"ListItem","position":34,"name":"34. Revenue by month (Advanced, JOIN + date functions)","url":"https://sqlint.com/sql-practice?exercise=34"},{"@type":"ListItem","position":35,"name":"35. Merchants and categories combined (Intermediate, UNION)","url":"https://sqlint.com/sql-practice?exercise=35"},{"@type":"ListItem","position":36,"name":"36. March salaries only (Beginner, AND conditions)","url":"https://sqlint.com/sql-practice?exercise=36"},{"@type":"ListItem","position":37,"name":"37. Orders by status (Beginner, GROUP BY)","url":"https://sqlint.com/sql-practice?exercise=37"},{"@type":"ListItem","position":38,"name":"38. Average order value (Intermediate, JOIN + ROUND)","url":"https://sqlint.com/sql-practice?exercise=38"},{"@type":"ListItem","position":39,"name":"39. Products never ordered (Intermediate, LEFT JOIN / NOT EXISTS)","url":"https://sqlint.com/sql-practice?exercise=39"},{"@type":"ListItem","position":40,"name":"40. Customers who never ordered (Intermediate, NOT IN / NOT EXISTS)","url":"https://sqlint.com/sql-practice?exercise=40"},{"@type":"ListItem","position":41,"name":"41. Top account by net flow (Advanced, JOIN + aggregation)","url":"https://sqlint.com/sql-practice?exercise=41"},{"@type":"ListItem","position":42,"name":"42. Fourth-highest distinct amount (Beginner, LIMIT + OFFSET)","url":"https://sqlint.com/sql-practice?exercise=42"},{"@type":"ListItem","position":43,"name":"43. Departments above the company average (Intermediate, CTE (WITH))","url":"https://sqlint.com/sql-practice?exercise=43"},{"@type":"ListItem","position":44,"name":"44. High earners (view projection) (Intermediate, Views)","url":"https://sqlint.com/sql-practice?exercise=44"},{"@type":"ListItem","position":45,"name":"45. Department headcounts (procedure) (Intermediate, Stored procedures)","url":"https://sqlint.com/sql-practice?exercise=45"},{"@type":"ListItem","position":46,"name":"46. Instant primary-key lookup (Beginner, Indexes (PK lookup))","url":"https://sqlint.com/sql-practice?exercise=46"},{"@type":"ListItem","position":47,"name":"47. Employees with their department (Intermediate, JOIN (N+1 fix))","url":"https://sqlint.com/sql-practice?exercise=47"},{"@type":"ListItem","position":48,"name":"48. Projected ₹5,000 transfer (Intermediate, Transactions (projected))","url":"https://sqlint.com/sql-practice?exercise=48"},{"@type":"ListItem","position":49,"name":"49. Consistency audit (LEFT JOIN) (Intermediate, ACID (consistency))","url":"https://sqlint.com/sql-practice?exercise=49"}]}
{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Is this SQL practice really free?","acceptedAnswer":{"@type":"Answer","text":"Yes. The playground and all 49 exercises are completely free with no signup, no usage limits, and no credit card. A free account is only needed if you want to practice the full interview question bank with saved progress."}},{"@type":"Question","name":"Do I need to install anything to practice SQL?","acceptedAnswer":{"@type":"Answer","text":"No. Queries run on a real SQLite engine compiled to WebAssembly, entirely inside your browser. It works on any modern laptop, tablet, or phone."}},{"@type":"Question","name":"Is my data private?","acceptedAnswer":{"@type":"Answer","text":"Yes. Everything executes locally on your device — your queries and results never leave the browser and nothing is uploaded to a server."}},{"@type":"Question","name":"Which SQL dialect does the playground use?","acceptedAnswer":{"@type":"Answer","text":"SQLite (via WebAssembly). Core SELECT, JOIN, GROUP BY, window-function, and subquery syntax you practice here transfers directly to PostgreSQL, MySQL, and SQL Server."}},{"@type":"Question","name":"Can I practice SQL with my own CSV or Excel file?","acceptedAnswer":{"@type":"Answer","text":"Yes. Upload a CSV or Excel file (.xlsx/.xls/.xlsm, one table per sheet) — up to 10 tables and 100,000 rows each — or build tables with CREATE TABLE. Uploads become live SQLite tables in your browser (you can JOIN across them in free-play mode) and never leave your device, so nothing is uploaded to a server."}},{"@type":"Question","name":"What is the SQL Question of the Day?","acceptedAnswer":{"@type":"Answer","text":"A new free SQL interview question published every day on the Question of the Day page — solve it in your browser with instant feedback (SQLite, no signup) and share it with a friend. It is also embedded as a dropdown on this practice page."}},{"@type":"Question","name":"What SQL topics do the exercises cover?","acceptedAnswer":{"@type":"Answer","text":"49 curated exercises across 3 sample databases (HR, e-commerce, and fintech) progress from SELECT, WHERE, and ORDER BY through JOINs, GROUP BY, HAVING, LIKE, CASE, date and string functions, and NULL handling, up to CTEs, UNION, window functions, and correlated subqueries — each with hints and a reference solution."}}]}
| apple-mobile-web-app-capable | yes |
| theme-color | #0f172a |
| color-scheme | light dark |
| mobile-web-app-capable | yes |
| apple-mobile-web-app-title | SqlInt |
| apple-mobile-web-app-status-bar-style | default |
| og:site_name | SqlInt |
| og:image | https://sqlint.com/practice-og.jpg |
| og:image:width | 1200 |
| og:image:height | 630 |
| og:image:alt | SqlInt SQL practice playground |
| og:type | website |
| twitter:card | summary_large_image |
| twitter:image | https://sqlint.com/practice-og.jpg |
Links:
Viewport: width=device-width, initial-scale=1
Robots: index, follow