SQL独学ロードマップ|初心者が最短で実務レベルになる学習順序
「SQLを勉強しよう」と決めて参考書を開いたものの、目次を眺めた時点で気が遠くなった——そんな経験はないでしょうか。SELECT、JOIN、GROUP BY、サブクエリ、ウィンドウ関数……。用語だけが並んでいて、どれから手をつければいいのか、そもそも自分が何を作れるようになるのかが見えてこない。独学でSQLを始めた人の多くが、この「地図がない」状態で最初につまずきます。
この記事は、その地図を渡すためのものです。私自身が遠回りして気づいた「この順番で学べば迷わない」というルートを、なぜその順番なのかという理由と、各ステップでつまずきやすいポイントとあわせて紹介します。
そもそもSQLは「何を勉強する言語」なのか
順番の話に入る前に、一つだけ前提を共有させてください。SQLは、プログラミング言語というより「データベースに話しかけるための言葉」です。
たとえば「20歳以上のユーザーの名前を、登録が新しい順に10人ぶん教えて」という頼みごとを、そのまま機械が読める形にしたのがSQLです。JavaScriptやPythonのように「処理の手順」を書くのではなく、「どんなデータが欲しいか」を宣言する。ここが最初のマインドセットの切り替えポイントで、これに慣れるだけで学習がぐっと楽になります。
学習ロードマップ:この6ステップで進める
結論から示します。上から順に、前のステップが次の土台になる構成です。飛ばさず積み上げるのが、遠回りに見えて一番の近道です。
- SELECT / WHERE — データを取り出す・絞り込む
- ORDER BY / LIMIT — 並び替える・件数を絞る
- 集計(COUNT・SUM・AVG・GROUP BY) — データを数える・まとめる
- JOIN — 複数のテーブルをつなぐ
- サブクエリ / HAVING — 一歩進んだ絞り込み
- ウィンドウ関数 — ランキングや累計などの応用集計
それぞれ、なぜその位置にあるのかを説明していきます。
ステップ1:SELECT / WHERE —— すべての土台
最初に覚えるのは、データを取り出す SELECT と、条件で絞り込む WHERE です。地味に見えますが、SQLで書くクエリの体感9割にはこの2つが含まれます。ここが盤石になっていないと、この先のどのステップでも足を取られます。
つまずきどころは、SELECT *(全部取ってくる書き方)に頼りすぎてしまうこと。最初のうちは楽なのですが、必要な列を自分で指定する習慣がつかないと、後々パフォーマンスやコードの読みやすさで困ります。「今このクエリで本当に必要な列はどれか」を毎回考える癖を、この段階でつけておくと後が楽です。
ステップ2:ORDER BY / LIMIT —— 「欲しい形」で取り出す
取り出したデータを並び替える ORDER BY、件数を絞る LIMIT。この2つが加わると、「売上が高い順にトップ10」のような、実務でよくある要求に応えられるようになります。ステップ1と組み合わせるだけで、できることの幅が一気に広がる実感が得られるはずです。
ステップ3:集計 —— データを「まとめて見る」
COUNT(数える)、SUM(合計)、AVG(平均)といった集計関数と、それらをグループごとに計算する GROUP BY。ここがSQLの面白くなってくるところです。「カテゴリごとの売上合計」「日別の登録者数」のように、生のデータを意味のある数字へと変換できるようになります。
多くの人がここで一度つまずきます。GROUP BY を使うと、SELECT句に書ける列にルールが生まれるからです。「グループ化のキーにした列か、集計関数を通した列しか書けない」という制約は、理屈で覚えるより、実際にエラーを出して直す経験を通したほうが早く体に入ります。
ステップ4:JOIN —— 実務の山場
現実のデータは、複数のテーブルにきれいに分かれて保存されています。ユーザー情報はユーザーテーブル、注文情報は注文テーブル、というように。「誰が何を注文したか」を知るには、この2つをつなぐ必要があります。それが JOIN です。
ここが独学の最大の関門だと、私は思っています。テーブル同士がどう関係しているのかを頭の中でイメージできるかどうかが勝負で、ここを乗り越えると「SQLがわかってきた」という手応えが出てきます。焦らず、小さなテーブル2つで何度も結合を試すのがおすすめです。INNER JOIN と LEFT JOIN の違いは特につまずきやすいので、別記事で詳しく扱っています。
ステップ5:サブクエリ / HAVING —— 表現力を上げる
クエリの中にクエリを入れ子にする「サブクエリ」、集計した結果に対して条件をかける HAVING。この2つが使えると、「平均以上の点数を取った人だけ」「注文が5件を超えた顧客だけ」といった、一段複雑な絞り込みができるようになります。
WHERE と HAVING の使い分けは、多くの人がこんがらがるポイントです。ざっくり「集計する前の絞り込みが WHERE、集計した後の絞り込みが HAVING」と覚えておくと、迷ったときの指針になります。
ステップ6:ウィンドウ関数 —— 応用の世界へ
最後はウィンドウ関数。「部署ごとの給与ランキング」「日次の売上を累計していく」といった、集計とはまた違う切り口の分析ができるようになります。ここまで来れば、実務のデータ分析でSQLを武器として使える段階です。
いきなりここを目指す必要はありません。ステップ1〜4が体に馴染んでから触れると、驚くほどすんなり理解できます。
遠回りしないための、たった一つのコツ
ロードマップを示してきましたが、最後にこれだけは強調させてください。SQLは、読んで理解した「つもり」になりやすい言語です。
参考書のサンプルを目で追うと、「なるほど、わかった」と感じます。ところが、いざ自分で真っさらなエディタに向かうと、カンマの位置、GROUP BY の対象、JOIN の条件——どこかで必ず手が止まる。この「わかったつもり」と「実際に書ける」の間には、想像以上に大きな溝があります。
その溝を埋める方法はただ一つ、自分の手で書いて、実行して、エラーを直すことです。エラーメッセージは敵ではなく、あなたのクエリのどこがおかしいかを教えてくれる先生です。1章読んだら、必ず同じクエリを自分で打ち込んで実行する。この習慣がある人とない人とでは、3ヶ月後の到達点がまるで変わってきます。
まずは1問、書いて実行してみよう
地図を手に入れたら、あとは歩き出すだけです。眺めているだけでは前に進みません。
SQL Quest なら、登録不要・無料で、ブラウザからすぐにSQLを書いて実行できます。環境構築もいりません。まずは一番やさしい SELECT の問題から、実際に手を動かしてみてください。「わかったつもり」が「本当にわかった」に変わる瞬間を、ぜひ体験してほしいと思います。