Loading
  • LIGHT

  • DARK

ROUTE

ルートゼロの
アクティビティ

初心者向けSQL講座|SELECT文の書き方と実行順を完全解説

5

SELECT文って、結局どう書くのが正しいの?

「SELECT文を書こうとしたけど、書く順番がわからない…」
「なんとなく書いてるけど、これで合ってるのか不安」
「WHEREとORDER BYって、どっちが先だっけ?」

こんな悩み、Webエンジニアなら誰でも一度は経験があるはずです。

SQLはデータベースとやり取りするための必須言語ですが、文の構成順序が直感に反しているため、初心者ほど混乱しやすいポイントです。実際、間違った順序で書いてしまうとエラーになるか、意図しない結果を返すこともあります。

この記事では、SELECT文の正しい書き方と順番の理解を軸に、
実務で役立つ書き方のコツやよくある間違いも交えながら、体系的に解説します。


SELECT文の基本構造と書き方の順番を理解する

SELECT文の基本構文

SQLのSELECT文は以下のような構成になっています。

SELECT 列名
FROM テーブル名
WHERE 条件
GROUP BY 列名
HAVING 条件
ORDER BY 列名 ASC|DESC
LIMIT 件数

これを図解すると、次のようになります。

▼SELECT文の構成フロー
┌────────────┐
│  SELECT     │ ← 取得する列を指定
├────────────┤
│  FROM       │ ← どのテーブルから?
├────────────┤
│  WHERE      │ ← どんな条件で?
├────────────┤
│  GROUP BY   │ ← グループ化のキー
├────────────┤
│  HAVING     │ ← グループ化後の絞り込み
├────────────┤
│  ORDER BY   │ ← 並び順を決定
├────────────┤
│  LIMIT      │ ← 取得件数を制限
└────────────┘

具体例:ユーザー情報を抽出する

SELECT name, email
FROM users
WHERE is_active = 1
ORDER BY created_at DESC
LIMIT 10;

このSQLは、
「アクティブなユーザーを新しい順に10件だけ取得する」
というシンプルで実務的な用途に使えます。

補足:SQLの実行順序とは違う!?

多くの人が混乱するのが、「SQLは書く順番と実行される順番が違う」という点です。

SQLの「書く順番」と「実行順序」の対応リスト

書く順番(構文順)

  1. SELECT

  2. FROM

  3. WHERE

  4. GROUP BY

  5. HAVING

  6. ORDER BY

  7. LIMIT

実行順序(内部的)

  1. FROM

  2. WHERE

  3. GROUP BY

  4. HAVING

  5. SELECT

  6. ORDER BY

  7. LIMIT

SQLエンジンはまずFROMでテーブルを読み込み、WHEREで絞り込み、GROUP BYでグループ化し…という流れで内部的に処理していきます。


つまずきやすいSELECT文の落とし穴とその対処法

間違った例:WHEREで集計結果を絞ろうとする

SELECT department, COUNT(*) as staff_count
FROM employees
GROUP BY department
WHERE staff_count > 5;  -- ❌構文エラー

原因:WHERE句では集計結果(エイリアス)を使えません。

✅正しい例:集計後の条件はHAVINGで

SELECT department, COUNT(*) as staff_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;  -- OK

解説:HAVINGはGROUP BY後の絞り込みに使います。WHEREはそれより前段階でのフィルタです。


間違った例:ORDER BYに存在しない列を指定

SELECT name
FROM users
ORDER BY created_at DESC;  -- ❌created_atはSELECTに含まれていない

多くのDBではこのような記述も許容されますが、意図しない挙動の原因になります。

正しい例:SELECTにも列を含める

SELECT name, created_at
FROM users
ORDER BY created_at DESC;

補足:明示的に必要な列は全てSELECT句にも含めるのがベストプラクティスです。


SELECT文の基本を押さえて、実務で自在に使いこなそう

この記事のまとめ

  • SELECT文の構文順序と実行順序は違う:理解するとエラーを回避できる

  • WHEREとHAVINGの違いを押さえると、集計系のSQLも自在に書ける

  • ORDER BYやLIMITで結果の整形まで意識すると、実務でも重宝する

次に学ぶべきこと

SELECT文の基本を押さえたら、以下のトピックもおすすめです。

  • 「JOINによる複数テーブルの結合方法」

  • 「サブクエリの活用テクニック」

  • 「ウィンドウ関数で高度な集計を行う方法」


最後に

SQLは書けば書くほど自然と体に馴染んでいく言語です。
小さな疑問や不安をひとつずつ解消しながら、確実にスキルを積み上げていきましょう。

実際に手を動かして試してみたい方は、SQLiteやMySQLのブラウザ実行環境を活用するのもおすすめです。

【外部リンク】

MySQL公式リファレンス:SELECT文

SQLite公式:SELECT構文

Microsoft Learn:SELECT – Transact-SQL

【内部リンク】

【SQL】副問い合わせ入門|基本構文から実例まで徹底解説

【Docker入門】MySQL環境を手軽に構築する方法を徹底解説

もっとルートゼロを知りたいなら

DISCOVER MORE