【SQL第3回】条件による絞り込み:WHERE句
データベースから特定の行(レコード)だけを抽出してフィルタリングする「WHERE句」の使い方を学びます。比較演算子や複数の条件を繋ぐAND/OR、便利なあいまい検索(LIKE)を習得します。
1. レコードを絞り込む WHERE 句のルール
データベースのテーブルには通常、膨大な数の行(レコード)が蓄積されています。その中から「年齢が30歳以上のユーザー」「東京都在住の会員」のように、特定の行だけを取り出したい場合に用いるのが `WHERE句` です。
`WHERE句` は、常に `FROM テーブル名` の**後ろ**に置いて記述します。
2. 条件指定で使う比較演算子
等価や大小を比べるために、SQLでは以下の演算子を利用します。
- = : 等しい(※プログラミングと違い、イコールは1つだけです)
- <> : 等しくない(※データベースの伝統的な「ノットイコール」の記述です)
- > / < : 〜より大きい / 〜より小さい
- >= / <= : 〜以上 / 〜以下
⚠️ 文字列や日付はシングルクォーテーションで囲む
`WHERE age = 20` のような数値の判定とは異なり、文字列や日付を判定条件に指定する場合は、必ず値をシングルクォーテーションで囲む必要があります(例: `WHERE gender = ‘女性’` や `WHERE created_at = ‘2026-07-02’`)。
3. 部分一致を狙う LIKE 検索
「完全に一致する文字列」ではなく、「〜を含む」「〜から始まる」といった、あいまいな文字列検索をしたい場合は、`LIKE` 演算子とワイルドカード文字であるパーセント記号 `%` を組み合わせて使用します。
- 前方一致 (例: ‘山田%’) : 山田太郎、山田花子など「山田」から始まるレコード。
- 後方一致 (例: ‘%子’) : 花子、祥子など「子」で終わるレコード。
- 部分一致 (例: ‘%東京%’) : 前後の位置に関わらず、文字の中に「東京」が含まれているレコード。
4. さまざまな条件絞り込みを行うSQLクエリ
以下のクエリは、ANDを用いた複数条件絞り込み、およびメールアドレスに「gmail.com」が含まれるユーザーを抽出する部分一致検索のコード例です。
-- 1. ANDを使った複数条件(20代で、かつ東京都在住) SELECT * FROM users WHERE age >= 20 AND age < 30 AND address = '東京都'; -- 2. LIKEを使った部分一致(Gmailアドレスのユーザーのみ) SELECT name, email FROM users WHERE email LIKE '%@gmail.com';
SQLで「山田から始まる」のようなあいまいな文字列部分一致検索を行いたい場合、比較演算子の「=」に代わって用いる必須の命令キーワードは何でしょうか?
※この問題の解答と解説は、ページ最下部(まとめの前)に掲載しています。
5. まとめと次回予告
第3回の講義はお疲れ様でした!今回の重要ポイントを振り返りましょう。
- `WHERE` 句を `FROM` の後ろに置くことで、条件に合致するレコードだけを抽出できる。
- 文字や日付をWHEREの条件で指定する際は、値を `’ ‘` (シングルクォート) で囲む。
- 部分一致検索を行うには `LIKE ‘文字列%’` のようにパーセント記号を組み合わせて指定する。
次回(第4回)は、抽出した結果を見やすい順に並べる「ORDER BYによる昇順・降順ソート」と、取得数を制限する「LIMIT」について学びます。お楽しみに!
📖 SQLの基礎を全10回でマスターする
🔑 第3回 理解度チェックの解答と解説
【解説】
正解は **`LIKE`** です。 `WHERE name LIKE ‘山田%’` と記述することで、「山田」で始まるあらゆるレコードを検索します。この部分一致のパターンマッチングには `%` (任意の文字数) や `_` (任意の1文字) のワイルドカード記号が利用され、非常に強力な検索機能を提供します。