Skip to main content
SQL MCQ Test

SQL MCQ test &
quiz online.

SQL is the query language every relational database speaks. Interviews test whether you can reason about set semantics, not just write SELECTs. 587 SQL questions are live, each with the code on the page. Read any of them free; sign in to attempt one and see the explanation.

587
SQL questions
105
Easy
236
Medium
246
Hard
why this works

Built for SQL mastery, not memorisation.

Every question is hand-checked, every answer comes with an explanation, and your progress builds into a clear picture of where you stand.

The snippet is on the page

Every SQL question shows its code before you answer, so you are reading real SQL, not a description of it.

A written explanation, always

Once you attempt a question you get the reasoning, not just a tick. That matters most on SQL, where join semantics with nulls, group by versus window functions, index selectivity, isolation levels, and reading a query plan.

Your weak topics, named

Progress is tracked per topic across the 50 SQL topics, so revision points at the gaps instead of the whole list.

what's covered

Every SQL concept,
tested honestly.

From fundamentals to interview-grade edge cases across 24 topic areas with progressive difficulty, so you find your gaps before an interviewer does.

window functions ROW_NUMBER RANK
nested-loop join
isolation levels and anomalies
composite and partial indexes
table bloat and VACUUM
the query planner optimizer
UNION vs UNION ALL
correlated subqueries
JSONB querying
aggregate functions
CTEs WITH
self-joins
pivot conditional aggregation
hash join
transactions BEGIN COMMIT
reading EXPLAIN ANALYZE
statistics and cardinality estimation
recursive CTEs
EXISTS vs IN
covering indexes
MVCC and row versions
merge join
row vs table locking
INNER JOIN

Ready to test your SQL chops?

Read any question and its code for free. A free account unlocks answering, the explanations and your score, so you walk away with a clearer picture of what to study next.

faq

Things people ask.

How many SQL MCQs are on Journey Uncommon?

587 SQL questions right now: 105 easy, 236 medium and 246 hard. That number is read straight from the question table when this page is built, so it is never a rounded marketing figure.

Do I need an account to read the SQL questions?

No. Every SQL question, including its code snippet, its difficulty and its topic, is readable without signing in. You need a free account only to submit an answer, see which option is correct, and read the worked explanation. We keep it that way so the platform stays honest about what you actually got right.

What do SQL interviewers actually test?

Join semantics with NULLs, GROUP BY versus window functions, index selectivity, isolation levels, and reading a query plan.

Which SQL topics are covered?

50 distinct topics are tagged on the SQL questions, including window functions ROW_NUMBER RANK, nested-loop join, isolation levels and anomalies, composite and partial indexes, table bloat and VACUUM, the query planner optimizer. The topic labels come from the questions themselves, so the list matches what you will actually be asked.

Is SQL practice free?

Yes. Reading is free and unlimited. A free account unlocks answering, explanations and progress tracking. Pro (₹199 per month) adds AI explanations and AI-graded guesstimates on top; it is not needed to practise SQL MCQs.

Where is SQL used in real jobs?

Backend, data engineering, analytics, and any role that touches a production database.

What a SQL question here actually looks like

These are 12 of the 587 SQL questions in the library, pulled live from the question table. The snippet, the difficulty and the topic are all here. The answer options and the explanation are not. Those need a free account.

Join semantics with NULLs, GROUP BY versus window functions, index selectivity, isolation levels, and reading a query plan.

Sample SQL MCQs

mediumcorrelated subqueries

You want each employee whose salary is the maximum within their own department. Which correlated form is correct?

-- Goal: keep only rows that are the dept max
-- Option A
SELECT e.* FROM emp e
WHERE e.salary = (SELECT MAX(x.salary) FROM emp x WHERE x.dept_id = e.dept_id);
-- Option B
SELECT e.* FROM emp e
WHERE e.salary >= ALL (SELECT x.salary FROM emp x);
-- Option C
SELECT e.* FROM emp e
WHERE e.salary = (SELECT MAX(x.salary) FROM emp x);
-- Option D
SELECT e.* FROM emp e
WHERE EXISTS (SELECT 1 FROM emp x WHERE x.salary > e.salary);
Read the full question →
Sign in to answer

Everything above is free to read. Answering needs a free account.

We keep the correct answer, the explanation and the scoring behind sign-in so the platform stays honest, which is why the correct option and the worked explanation for every SQL question stay behind a free account. Signing in is free and takes a few seconds.

Where SQL shows up

Backend, data engineering, analytics, and any role that touches a production database.