こんにちは、かつコーチです。
前回はSELECT文の基本を解説しましたが、実務では「全件取得」よりも「条件に合うデータだけ取得したい」場面がほとんどです。
例えば「30歳以上の会員だけ取得したい」「特定のメールアドレスのユーザーを探したい」といったケースです。
こうした絞り込みを実現するのがWHERE句です。
この記事では、前回と同じusersテーブルを使ってWHERE句の使い方を解説します。
WHERE句とは?
WHERE句の役割
WHERE句とは、SELECT文に条件を追加し、条件に一致する行だけを取得するための構文です。
「WHERE(どこで)」という単語の通り、「どの行を対象にするか」を指定します。
基本構文
SELECT カラム名 FROM テーブル名 WHERE 条件;
例えば、ageが30以上の会員だけを取得したい場合は、以下のように書きます。
SELECT name, age FROM users WHERE age >= 30;
name | age
--------+-----
佐藤花子 | 34
よく使う比較演算子
WHERE句では、以下のような比較演算子を使って条件を指定します。
| 演算子 | 意味 | 使用例 |
|---|---|---|
= | 等しい | WHERE age = 28 |
!= または <> | 等しくない | WHERE age != 28 |
> | より大きい | WHERE age > 28 |
< | より小さい | WHERE age < 28 |
>= | 以上 | WHERE age >= 28 |
<= | 以下 | WHERE age <= 28 |
文字列を条件にする場合
文字列を条件にする場合は、値をシングルクォート(')で囲みます。
SELECT * FROM users WHERE name = '田中太郎';
数値の場合はクォートが不要ですが、文字列の場合は必ずクォートが必要です。
このルールを忘れると、次のようなエラーにつながります。
❌ SELECT * FROM users WHERE name = 田中太郎;
-- カラム名として解釈され、エラー(Unknown column '田中太郎' in 'where clause')になる
✅ SELECT * FROM users WHERE name = '田中太郎';
私も学習を始めたばかりの頃、このUnknown columnエラーの意味が分からず、10分ほど原因調査に費やしたことがあります。
「クォート忘れ」はSQL初心者が最初にハマる定番のエラーなので、覚えておくと役立ちます。
AND・ORで複数条件を組み合わせる
AND:すべての条件を満たす
複数の条件をすべて満たす行を取得したい場合は、ANDでつなぎます。
SELECT name, age FROM users WHERE age >= 25 AND age <= 35;
OR:いずれかの条件を満たす
いずれかの条件を満たせば良い場合は、ORを使います。
SELECT name, age FROM users WHERE age = 22 OR age = 34;
AND・OR・NOTを使った条件の組み立て方は、次のカテゴリ(条件・演算子)でさらに詳しく解説します。
つまずきやすい設定・注意点
NULLを=で比較できない
WHERE句で特に初心者がつまずきやすいのが、NULL(値が存在しないことを表す特殊な状態)の扱いです。
❌ SELECT * FROM users WHERE age = NULL;
-- 常に結果が0件になる(エラーにはならないが意図通り動かない)
✅ SELECT * FROM users WHERE age IS NULL;
age = NULLという書き方は、エラーにはならないものの常に結果が返ってきません。
NULLの詳しい扱い方は、条件・演算子カテゴリのSB14で改めて解説します。
大文字小文字の扱い
MySQLの文字列比較は、デフォルトの設定では大文字小文字を区別しない場合があります(照合順序の設定に依存)。
環境によって挙動が変わるため、「大文字小文字を区別したいのに一致してしまう」「その逆」といった現象が起きたら、テーブルの照合順序(collation)設定を確認してみましょう。
まとめ
この記事のポイント
- WHERE句はSELECT文に条件を追加し、条件に一致する行だけを取得するための構文
- 比較演算子(
=、>、<など)で条件を指定できる - 文字列を条件にする場合は必ずシングルクォートで囲む
- 複数条件はAND(すべて満たす)・OR(いずれか満たす)で組み合わせる
- NULLの比較には
=ではなくIS NULLを使う
次に読むべき記事
- SELECT文の基本:データを取得する
- ORDER BYで並び替える
タグ: SQL, 初心者向け, 基本文法