カテゴリ: データベース 更新日: 2026/03/28

SQL実行順序を完全攻略!WHEREとSELECTの違いを初心者向けに徹底解説

SQLの実行順序を完全理解!WHEREとSELECTの違いで混乱しないための基礎知識
SQLの実行順序を完全理解!WHEREとSELECTの違いで混乱しないための基礎知識

先生と生徒の会話形式で理解しよう

生徒

「SQLを勉強し始めたんですけど、書く順番とコンピュータが動く順番が違うって聞いて混乱しています。WHEREとSELECT、どっちが先に動くんですか?」

先生

「それは初心者が最初につまずく大事なポイントですね。実は、私たちが書く順番は『人間にとっての読みやすさ』を優先していますが、コンピュータは『作業の効率』を優先して動いているんです。」

生徒

「なるほど。だからWHEREで絞り込むのと、SELECTで列を選ぶ順番を勘違いしちゃうんですね。」

先生

「その通りです。今回は、データベースという大きな本棚からどうやってデータが取り出されるのか、その裏側の手順を『カレー作り』などの例えを使ってわかりやすく紐解いていきましょう!」

1. SQLとは何か?

1. SQLとは何か?
1. SQLとは何か?

SQL(エスキューエル)は、データベースと呼ばれる「大量のデータを整理して保存する箱」に対して指示を出すための言語です。例えば、インターネットショッピングの会員名簿の中から特定の人を探したり、銀行の残高を更新したり、新しい商品を登録したりするときに使います。プログラミング未経験の方でも、Excel(エクセル)のような「表」をイメージすれば大丈夫です。SQLは、その表に対して『この行だけ見せて!』や『この列だけ抜き出して!』と命令する魔法の言葉なのです。

エンジニアの必須スキル「SQL」を、 図解と豊富な練習問題でゼロから体系的に学びたい人へ。 MySQLやPostgreSQLなど、各種データベースに対応した不朽の入門書です。

SQL 第2版 ゼロからはじめるデータベース操作をAmazonで見る

※ Amazon広告リンク

2. データベースの「テーブル」をイメージしよう

2. データベースの「テーブル」をイメージしよう
2. データベースの「テーブル」をイメージしよう

SQLを学ぶ前に、まずは操作対象となる「テーブル」を理解しましょう。テーブルとは、データベースの中でデータが保存されている「表」そのもののことです。縦の列を「カラム(フィールド)」、横の一行を「レコード」と呼びます。今回は、あるお店の「顧客リスト」を例にして考えてみます。

操作前のテーブル(users)


id | name       | age | city    | status
---+------------+-----+---------+---------
1  | 山田太郎   | 25  | 東京都  | 会員
2  | 佐藤花子   | 19  | 大阪府  | 非会員
3  | 鈴木一郎   | 30  | 北海道  | 会員
4  | 田中愛     | 22  | 東京都  | 会員
5  | 伊藤健二   | 45  | 福岡県  | 非会員
6  | 渡辺直美   | 28  | 東京都  | 会員

3. 基本文法のSELECTとWHEREの役割

3. 基本文法のSELECTとWHEREの役割
3. 基本文法のSELECTとWHEREの役割

SQLで最もよく使われるのが、データを取得する命令です。ここで主要な2つのキーワードが登場します。

  • SELECT(セレクト): 「どの列(項目)」を表示するかを選びます。
  • WHERE(ウェア): 「どの行(データ)」を取り出すか、条件を指定して絞り込みます。

例えば、「東京都に住んでいる人の名前だけを知りたい」という場合、人間は「まず名簿の名前の列を見て、そこから東京の人を探す」と考えがちですが、SQLの書き方は少し異なります。まずは基本的なコードの書き方を見てみましょう。


SELECT name, city
FROM users
WHERE city = '東京都';

実行後の結果:


name       | city
-----------+---------
山田太郎   | 東京都
田中愛     | 東京都
渡辺直美   | 東京都

4. SQLの「書く順番」と「実行される順番」の違い

4. SQLの「書く順番」と「実行される順番」の違い
4. SQLの「書く順番」と「実行される順番」の違い

ここが今回のメインテーマです。SQLには、人間がコードを記述する順番(構文順)と、データベースのシステムが実際に内部で処理を行う順番(実行順序)の2種類が存在します。

人間が書く順番(構文順)

  1. SELECT(列を選ぶ)
  2. FROM(テーブルを選ぶ)
  3. WHERE(条件で絞る)

コンピュータが実行する順番(内部処理順)

  1. FROM: まず、どの本棚(テーブル)を見るか決める。
  2. WHERE: 次に、条件に合う行だけを抜き出す(フィルタリング)。
  3. SELECT: 最後に、必要な項目(列)だけを切り出す。

なぜこの順番なのでしょうか?例えば、カレーを作るときを想像してください。「ジャガイモの皮をむく(SELECT)」という作業を、冷蔵庫にある「すべての食材(テーブル)」に対して行うのは非効率ですよね。まずは「カレーに使う野菜だけを取り出す(WHERE)」という作業を先に行い、その後に「選ばれた野菜の皮をむく(SELECT)」方が、手間が少なくて済みます。データベースも同じで、最初に不要なデータを捨ててから、必要な列だけを抽出する方が速く処理できるのです。

5. 実践例1:20歳以上の会員を抽出する

5. 実践例1:20歳以上の会員を抽出する
5. 実践例1:20歳以上の会員を抽出する

それでは、具体的な例でさらに深掘りしましょう。今度は「20歳以上の人の名前と年齢」を取り出してみます。ここでは、比較演算子(ひかくえんざんし)という「~以上」「~より大きい」を表す記号を使います。


SELECT name, age
FROM users
WHERE age >= 20;

このSQLが動くとき、データベース内部では以下のように動いています。

  1. FROM users: 「users」という表を広げる。
  2. WHERE age >= 20: 年齢が20以上の行だけを残し、それ以外(佐藤花子さんなど)を一旦無視する。
  3. SELECT name, age: 残ったデータの中から「name」と「age」の列だけを画面に表示する。

実行後の結果:


name       | age
-----------+-----
山田太郎   | 25
鈴木一郎   | 30
田中愛     | 22
伊藤健二   | 45
渡辺直美   | 28

6. 実践例2:複数の条件で絞り込む(ANDの使い方)

6. 実践例2:複数の条件で絞り込む(ANDの使い方)
6. 実践例2:複数の条件で絞り込む(ANDの使い方)

もっと複雑な指示を出してみましょう。「東京都に住んでいて、かつ会員の人」を探します。複数の条件を組み合わせるには「AND(アンド)」という言葉を使います。これもWHEREの中で使われる重要な要素です。


SELECT *
FROM users
WHERE city = '東京都' AND status = '会員';

※「SELECT *」の「*(アスタリスク)」は、「すべての列を表示して」という意味です。わざわざ列の名前を全部書かなくていいので便利です。

実行後の結果:


id | name       | age | city    | status
---+------------+-----+---------+---------
1  | 山田太郎   | 25  | 東京都  | 会員
4  | 田中愛     | 22  | 東京都  | 会員
6  | 渡辺直美   | 28  | 東京都  | 会員

ここでも順番は不変です。まずFROMでテーブルを選び、次にWHEREで「東京」かつ「会員」という条件で激しく絞り込みを行い、最後にSELECTですべての列を表示しています。

7. なぜWHEREとSELECTの順番を間違えると困るのか?

7. なぜWHEREとSELECTの順番を間違えると困るのか?
7. なぜWHEREとSELECTの順番を間違えると困るのか?

初心者の方がよくやってしまうミスに、「SELECTで別名をつけたのに、WHEREでその名前が使えない!」というものがあります。これを「エイリアス(別名)」の問題と呼びます。例えば、「name」という列に「名前」というあだ名をつけたとしましょう。


-- これはエラーになる可能性があります(データベースの種類によります)
SELECT name AS 名前
FROM users
WHERE 名前 = '山田太郎';

なぜエラーになるのか?それは、WHEREが動くときには、まだSELECT(あだ名をつける作業)が終わっていないからです。コンピュータはWHEREの段階で「『名前』っていう列なんて無いよ!」と怒ってしまうのです。このように、実行順序を知っておくと、エラーが出たときに「あ、まだこの段階ではその名前は使えないんだな」と冷静に判断できるようになります。

8. データの並べ替え(ORDER BY)との関係

8. データの並べ替え(ORDER BY)との関係
8. データの並べ替え(ORDER BY)との関係

データの抽出が終わった後、最後に「見やすく並べたい」ということがあります。そのときに使うのが「ORDER BY(オーダーバイ)」です。これは実行順序の最後の方に位置します。

実行順序の完全版(今回学習した範囲)

  1. FROM(どこから?)
  2. WHERE(どんな条件で?)
  3. SELECT(どの項目を?)
  4. ORDER BY(どんな順番で並べる?)

最後に「年齢が若い順(昇順)」に並べるSQLを書いてみましょう。


SELECT name, age
FROM users
WHERE status = '会員'
ORDER BY age ASC;

※「ASC」は小さい順(昇順)という意味です。

実行後の結果:


name       | age
-----------+-----
田中愛     | 22
山田太郎   | 25
渡辺直美   | 28
鈴木一郎   | 30

このように、SQLの処理の流れを一つずつ追いかけていくと、データベースがどうやって私たちの命令を解釈しているのかが見えてきます。一見難しそうに見える英語の羅列も、実は非常に論理的なステップで動いているのです。

カテゴリの一覧へ
新着記事
New1
Rails
Railsでアイコンと画像管理を完全ガイド!asset_path・image_pack_tag・SVGインライン化まで丁寧に解説
New2
Ruby
Rubyで学ぶ金額計算と消費税の基本!端数処理と銀行丸めを初心者向けにやさしく解説
New3
データベース
SQL実行順序を完全攻略!WHEREとSELECTの違いを初心者向けに徹底解説
New4
Ruby
Rubyの例外処理を完全攻略!raiseやrescueの使い方を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
Rails
RailsでXSSを防ぐ完全ガイド|ERB自動エスケープ・sanitize・Content Security Policy設定
No.2
Java&Spring記事人気No2
Rails
RailsのCSRF対策を完全解説!authenticity_token・SameSite・APIモードまで初心者向けに理解
No.3
Java&Spring記事人気No3
Ruby
Rubyの真偽値とnilを徹底解説!初心者が知っておくべき判定ルールと安全な書き方
No.4
Java&Spring記事人気No4
データベース
PostgreSQL配列型(Array)入門ガイド!初心者でもわかるデータベースの便利な使い方
No.5
Java&Spring記事人気No5
データベース
Redisのmaxmemory設定とは?メモリ管理とパフォーマンス向上の秘訣を初心者向けに解説
No.6
Java&Spring記事人気No6
データベース
データベース設計の要「主キー(プライマリキー)」とは?役割と正しい設計方法を初心者向けに徹底解説
No.7
Java&Spring記事人気No7
データベース
Redis入門ガイド!初心者でもできるインストール方法と初期設定を徹底解説
No.8
Java&Spring記事人気No8
データベース
PostgreSQLインデックス徹底解説!B-tree・GIN・GiSTの違いを初心者向けに紹介