データベースから必要な情報を取り出すために使う「SQL(エスキューエル)」。
その中でも、特によく使われるのが「WHERE句」です。
でも、実際に使うとなると「どんなときに使うの?」「複雑な条件はどう書けばいいの?」と悩む人も多いはずです。
この記事では、SQLを初めて学ぶ人でもわかるように、WHERE句の基本から応用まで丁寧に説明します。
実際の仕事で使える例や、よくある間違いも紹介するので、読み終わったらすぐに使えるようになりますよ。
SQLの基本とWHERE句について

SQLって何?
SQL(エスキューエル)は、データベースを操作するための言語です。主に次の4つのことができます:
- データを取得する
- データを登録する
- データを更新する
- データを削除する
WHERE句の役割
WHERE句は、特定の条件に合うデータだけを取り出すときに使います。
例えば、たくさんの会員情報から「20歳以上の人だけ」を取り出したいとき、WHERE句を使って条件を指定します。
基本的な書き方
基本の形
SELECT 列名 FROM テーブル名 WHERE 条件;
実際の例
SELECT * FROM users WHERE age >= 20;
この文は「usersテーブルから、年齢が20歳以上の人のデータを全て取り出す」という意味です。
WHERE句で使える条件の種類

比較演算子
数値や文字を比べるときに使います。
記号 | 意味 | 例 |
---|---|---|
= | 等しい | age = 20 |
<> または != | 等しくない | age <> 20 |
> | より大きい | price > 1000 |
< | より小さい | price < 1000 |
>= | 以上 | age >= 20 |
<= | 以下 | age <= 65 |
例:1000円より高い商品を探す
SELECT * FROM products WHERE price > 1000;
論理演算子
複数の条件を組み合わせるときに使います。
AND(かつ) すべての条件を満たすもの
SELECT * FROM users WHERE age >= 20 AND gender = 'female';
(20歳以上で、かつ女性のユーザー)
OR(または) どれかの条件を満たすもの
SELECT * FROM products WHERE category = '家電' OR category = '家具';
(家電または家具のカテゴリの商品)
NOT(〜でない) 条件を否定するとき
SELECT * FROM users WHERE NOT age < 18;
(18歳未満でないユーザー、つまり18歳以上)
特殊な条件
IN(リストから選択) 複数の値から選ぶとき
SELECT * FROM products WHERE category IN ('家電', '家具', '衣類');
BETWEEN(範囲指定) ある範囲内の値を指定するとき
SELECT * FROM sales WHERE date BETWEEN '2023-01-01' AND '2023-12-31';
(2023年1月1日から12月31日まで)
LIKE(あいまい検索) 部分的に一致するものを探すとき
SELECT * FROM employees WHERE name LIKE '佐藤%';
(「佐藤」で始まる名前の社員)
ワイルドカード
%
:何文字でもOK_
:1文字だけ
IS NULL(値なし) データが入っていない項目を探すとき
SELECT * FROM customers WHERE email IS NULL;
実際の仕事で使える例
お客さんの購入履歴を調べる
特定のお客さんが5000円以上買った履歴を見たいとき:
SELECT * FROM purchases
WHERE customer_id = 123 AND amount >= 5000;
退職した社員の一覧を作る
退職日が入力されている社員を探すとき:
SELECT * FROM employees
WHERE resignation_date IS NOT NULL;
キャンペーン期間中の売上を確認する
春セールの期間中に売れた商品を調べるとき:
SELECT * FROM sales
WHERE campaign = '春セール'
AND sale_date BETWEEN '2025-03-01' AND '2025-03-31';
複数条件を組み合わせる
20代の女性で、東京に住んでいる会員を探すとき:
SELECT * FROM members
WHERE age >= 20 AND age <= 29
AND gender = '女性'
AND address LIKE '%東京%';
よくある間違いと対処法

文字列の書き方を間違える
間違い
SELECT * FROM users WHERE name = 田中;
正しい書き方
SELECT * FROM users WHERE name = '田中';
文字列は必ずシングルクォート(’)で囲みます。
NULLの扱いを間違える
間違い
SELECT * FROM customers WHERE email = NULL;
正しい書き方
SELECT * FROM customers WHERE email IS NULL;
NULLを調べるときは「IS NULL」を使います。
括弧の使い方を間違える
間違い(意図しない結果になる)
SELECT * FROM users
WHERE age >= 18 AND age <= 25 OR gender = '女性';
正しい書き方
SELECT * FROM users
WHERE (age >= 18 AND age <= 25) OR gender = '女性';
ANDとORを組み合わせるときは、括弧で優先順位を明確にします。
大文字と小文字を間違える
データベースによって違いがある
- MySQLでは通常、大文字と小文字を区別しない
- PostgreSQLでは大文字と小文字を区別する
確実にするには、UPPER関数やLOWER関数を使います:
SELECT * FROM users WHERE UPPER(name) = UPPER('田中');
実践的なテクニック
複雑な条件を読みやすく書く
長い条件は改行して見やすくします:
SELECT * FROM orders
WHERE (status = '発送済み' OR status = '配達完了')
AND order_date >= '2025-01-01'
AND total_amount > 10000;
パフォーマンスを考えた書き方
よく検索される列にはインデックスを付けて、検索を高速化します。
-- customer_idにインデックスがある場合は高速
SELECT * FROM orders WHERE customer_id = 123;
日付の範囲検索
日付を扱うときは、時間も考慮します:
-- その日の0時から23時59分まで
SELECT * FROM orders
WHERE order_date >= '2025-01-01'
AND order_date < '2025-01-02';
まとめ
WHERE句は、SQLの中でも特に重要な機能です。シンプルな条件から複雑な組み合わせまで、さまざまな場面で活用できます。
覚えておきたいポイント
- 文字列はシングルクォートで囲む
- NULLの確認は「IS NULL」を使う
- 複雑な条件は括弧で優先順位を明確にする
- 実際のデータで試しながら覚える
この記事を参考に、ぜひ実際のデータベースでWHERE句を使ってみてください。
最初は簡単な条件から始めて、少しずつ複雑な条件にチャレンジしていけば、必ず使いこなせるようになります。
コメント