📌 結論から理解する
WHERE句=「取得する行を絞り込む条件を書く」
WHERE句はFROMで指定したテーブルから条件に合う行だけを取り出すフィルタです。
比較演算子と論理演算子
-- 比較演算子
WHERE price >= 10000 -- 10000以上
WHERE status <> 'inactive' -- ≠ (<> または !=)
-- 範囲指定
WHERE price BETWEEN 1000 AND 5000 -- 両端含む
-- リスト指定
WHERE category IN ('PC', 'tablet')
-- パターンマッチ
WHERE name LIKE '田%' -- 田で始まる
WHERE name LIKE '%商事%' -- 商事を含む
-- NULL判定(= NULL は使えない!)
WHERE memo IS NULL
WHERE memo IS NOT NULL
-- 論理演算子
WHERE price >= 1000 AND stock > 0
WHERE category = 'PC' OR category = 'tablet'
WHERE price >= 10000 -- 10000以上
WHERE status <> 'inactive' -- ≠ (<> または !=)
-- 範囲指定
WHERE price BETWEEN 1000 AND 5000 -- 両端含む
-- リスト指定
WHERE category IN ('PC', 'tablet')
-- パターンマッチ
WHERE name LIKE '田%' -- 田で始まる
WHERE name LIKE '%商事%' -- 商事を含む
-- NULL判定(= NULL は使えない!)
WHERE memo IS NULL
WHERE memo IS NOT NULL
-- 論理演算子
WHERE price >= 1000 AND stock > 0
WHERE category = 'PC' OR category = 'tablet'
LIKEのワイルドカード
| 記号 | 意味 | 例 | マッチする例 |
|---|---|---|---|
% | 0文字以上の任意文字列 | LIKE '田%' | 田中、田村一郎 |
_ | 任意の1文字 | LIKE '田_' | 田中、田村(田一郎はNG) |
よくある間違い
WHERE memo = NULL は動かない!NULLの比較は必ず IS NULL / IS NOT NULL を使う。
BETWEEN 1000 AND 5000 は 1000以上5000以下(両端含む)。試験で「5000を含むか」は頻出ひっかけ。
NOT IN にNULLが含まれると、結果が全行0件になる罠がある(NULLとの比較は常にUNKNOWNになるため)。
🧠 確認クイズ
Q1. NULL値の行を取得する正しいWHERE句はどれか?
Q2. LIKE '%東京%' が一致するのはどれか?
Q3. BETWEEN 100 AND 200 の条件として正しいのはどれか?