SQLクイズ

SELECT 句の順序、JOIN の種類、GROUP BY と HAVING、NULL の扱い、文字列の引用符など、新卒がつまずく SQL の基礎を制限時間つきで出題します。SQLite で実行確認した問題のみ掲載。

出題範囲

  • SELECT 文の句の順序(WHERE / GROUP BY / HAVING / ORDER BY / LIMIT)
  • INNER JOIN と LEFT JOIN の違い、一致しない行の扱い
  • GROUP BY と HAVING、集計関数と NULL
  • シングルクォートとダブルクォートの使い分け
  • UPDATE / DELETE で WHERE を忘れる事故
  • サブクエリとインデックスの基本

問題一覧

各問題の解説ページです。正答と解説、公式ドキュメントへの参考リンクを載せています。

番号問題形式難易度
sql-001先頭 5 件だけに絞る LIMIT 5 を足したい。正しく直したものは?4 択基礎
sql-002次の SQL は標準 SQL として誤りがある。正しく直したものは?4 択基礎
sql-003SELECT 文の句を書く正しい順番は?4 択基礎
sql-004SELECT 文で、データベースが最初に評価する句は?4 択基礎
sql-00520 歳以上に絞る条件 AND age >= 20 を足したい。正しく直したものは?4 択基礎
sql-006名前順で先頭 3 件を取りたい。正しく直したものは?4 択標準
sql-007次の SQL の結果は?(id は 1 から 5 の 5 行)4 択標準
sql-008SELECT 文の句をデータベースが評価する正しい順番は?4 択応用
sql-017次の SQL の結果は?(全 5 行、col が NULL の行が 2 行)4 択基礎
sql-0182 人以上いる部署だけを出したい。正しく直したものは?4 択標準
sql-019次の SQL の結果は?(score は 10, 20, NULL の 3 行)4 択標準
sql-020標準 SQL で GROUP BY dept を使うとき、SELECT に書けるものは?4 択基礎
sql-021部署名の重複を除いて一覧したい。正しく直したものは?4 択基礎
sql-022標準 SQL でエラーになる。このSQLへの指摘として正しいものは?4 択標準
sql-0232 人以上の部署に絞る HAVING COUNT(*) >= 2 を足したい。正しく直したものは?4 択標準
sql-024対象の列がすべて NULL のとき、SUM(列) の結果は 0 ではなく NULL になる。○×標準
sql-025部署ごとの人数を出したい。正しく直したものは?4 択基礎
sql-035id 42 だけ無効化したいのに全行が更新された。UPDATE 文を 1 行で正しく直して書いてください。記述標準
sql-036DELETE FROM users; を実行した結果は?4 択基礎
sql-037DELETE FROM t; と DROP TABLE t; は同じ結果になる。○×基礎
sql-038name だけを指定して 1 行追加したい。正しく直したものは?4 択標準
sql-039id が 42 のユーザーだけを無効化したい。直したものは?4 択標準
sql-040列リスト (name, email) を書き足したい。正しく直したものは?4 択基礎
sql-041更新を 1 つのトランザクションとして確定する正しい順番は?4 択基礎
sql-042BEGIN の後に UPDATE を実行し、まだ COMMIT していない。取り消すには?4 択標準
sql-009INNER JOIN は、片方の表にしか無い行を結果から落とす。○×基礎
sql-010LEFT JOIN で右側の表に一致する行が無いとき、右側の列の値は?4 択基礎
sql-011注文の無いユーザーも出したいのに出ない。このSQLへの指摘として正しいものは?4 択標準
sql-012次の SQL の結果は?(ann の注文は id 10, 11。bob に注文は無い)4 択標準
sql-013ユーザー名と注文金額を正しく対応づけたい。直したものは?4 択標準
sql-014注文の無いユーザーも残し、支払済の注文だけを付けたい。条件の場所は?4 択応用
sql-015次の SQL の結果は?(ann の注文 10 は paid、11 は unpaid。bob に注文は無い)4 択応用
sql-016結合条件 ON u.id = o.user_id を足したい。正しく直したものは?4 択基礎
sql-026メールアドレスが未登録のユーザーを出したい。直したものは?4 択基礎
sql-027次の SQL の結果は?(v の値は 'a', 'b', NULL の 3 行)4 択応用
sql-028nickname が NULL のときだけ name を表示したい。使う式は?4 択基礎
sql-029次の SQL の結果は?4 択基礎
sql-030名前が Alice の行を取りたい。正しく直したものは?4 択基礎
sql-031名前が A で始まる行を取り出す条件は?4 択基礎
sql-032次の SQL の結果は?(code は 'abc', 'ac', 'abbc', 'axc' の 4 行)4 択標準
sql-033WHERE NULL = NULL という条件は真になる。○×基礎
sql-034この SQL はエラーになる。1 行で正しく直して書いてください。記述標準
sql-043次の SQL の結果は?(注文の user_id は 1, 1, 3)4 択標準
sql-044注文の無いユーザーを出したいが 0 件になる。直したものは?4 択応用
sql-045結果は?(sales: ann 350, bob 500 / dev: cat 400, dan 100)4 択応用
sql-046主キー(PRIMARY KEY)制約が保証することは?4 択基礎
sql-047WHERE email = ? での検索が遅い。最初に検討すべき対策は?4 択基礎
sql-048支払済(status = 'paid')の注文があるユーザーだけに絞りたい。正しく直したものは?4 択応用
sql-049id 列を主キーにしたい。正しい CREATE TABLE は?4 択基礎
sql-050注文のあるユーザー全員を出したいのに 1 人しか出ない。このSQLへの指摘として正しいものは?4 択応用
sql-051dept が 'dev' の行だけに絞る WHERE を足したい。正しいのは?4 択基礎
sql-052CTE(WITH 句)high を使う書き方として正しいのは?4 択基礎
sql-053給与 200 以上の行だけを部署ごとに数えたい。正しいのは?4 択基礎
sql-054給与の高い順に上位 2 名を出したい。正しいのは?4 択基礎
sql-055SQLite で LIMIT と OFFSET を両方書くときは、LIMIT 10 OFFSET 20 の順に書く。○×基礎
sql-056給与の高い順で 3 位と 4 位の 2 名を出したい。正しいのは?4 択標準
sql-057SQLite の LIMIT 2, 5 は「5 行飛ばして 2 行取る」という意味である。○×標準
sql-058emp と dept を結合し、給与 300 以上だけを出したい。正しいのは?4 択基礎
sql-059部署名を重複なしで一覧したい。DISTINCT の位置が正しいのは?4 択基礎
sql-060この SQL はエラーになる。正しく直して書いてください。記述基礎
sql-061合計給与が 600 以上の部署だけを出したい。正しいのは?4 択標準
sql-062GROUP BY と HAVING を両方書くとき、HAVING は GROUP BY の後ろに置く。○×標準
sql-063CTE を 2 つ(d と h)定義する書き方として正しいのは?4 択標準
sql-064FROM のサブクエリに別名 t を付けて t.s を使いたい。正しいのは?4 択応用
sql-065部署内で給与の高い順に順位 r を付けたい。正しいのは?4 択応用
sql-066UNION した結果全体を名前順にしたい。正しいのは?4 択標準
sql-067HAVING の位置が誤っている。正しく直して書いてください。記述標準
sql-068この SQL はエラーになる。WITH を正しい位置に直して書いてください。記述応用
sql-069この SQL で綴りが間違っている語は?4 択基礎
sql-070この SQL で綴りが間違っている語は?4 択基礎
sql-071この SQL で綴りが間違っている語は?4 択基礎
sql-072この SQL で綴りが間違っている語は?4 択基礎
sql-073name と salary の 2 列を出したいのに 1 列しか出ない。正しく直したものは?4 択標準
sql-074SQLite で実行すると、エラーになるのはどれ?4 択応用
sql-075この SQL はエラーになる。正しく直して書いてください。記述基礎
sql-076綴りが間違っている語を、正しい綴りで書いてください。記述基礎
sql-077この SQL はエラーになる。正しく直して書いてください。記述標準
sql-078この SQL はエラーになる。正しく直して書いてください。記述標準
sql-079この SQL には誤りが 2 か所ある。正しく直して書いてください。記述応用
sql-080SQLite で WHERE dept == 'dev' と書くと、= の打ち間違いとしてエラーになる。○×標準

よくある質問

SQLのクイズは何が出ますか?

SELECT 文の句の順序(WHERE / GROUP BY / HAVING / ORDER BY / LIMIT)、INNER JOIN と LEFT JOIN の違い、一致しない行の扱い、GROUP BY と HAVING、集計関数と NULL、シングルクォートとダブルクォートの使い分け、UPDATE / DELETE で WHERE を忘れる事故、サブクエリとインデックスの基本を出題範囲にしています。1 問 10 秒前後で解ける基礎的な内容が中心で、暗記ではなくコードを読んで判断する形式が多いです。

何問ありますか?

現在 80 問です。すべてオリジナルで、ビルド時に構造検証を通したものだけを掲載しています。

回答は送信されますか?

問題の番号・正誤・選んだ選択肢の番号・かかった時間を、問題改善のための統計として Google アナリティクスに送信します。記述式(SQL・コマンド・英単語を書く問題)は、書いた答えも送信します。結果画面でエンジニア歴を答えた場合は、その区分も送信します(任意)。