SQL SELECTとWHERE句 — 行のフィルタリング
WHERE句を使用したSQL SELECT文の行フィルタリングを完全解説。比較演算子、LIKE、IN、BETWEEN、IS NULL、ブール論理をカバーします。
DML Commands
詳細な説明
WHEREによるデータフィルタリング
WHERE句はSELECT文で返される行をフィルタリングする方法です。比較演算子、パターンマッチング、集合のメンバーシップ、NULLチェックをサポートします。
比較演算子
SELECT * FROM employees
WHERE salary >= 50000
AND salary < 100000;
| 演算子 | 意味 |
|---|---|
= |
等しい |
<>または!= |
等しくない |
<、> |
より小さい、より大きい |
<=、>= |
以下、以上 |
LIKEによるパターンマッチング
SELECT * FROM employees
WHERE name LIKE 'A%'; -- Aで始まる
WHERE email LIKE '%@gmail.com'; -- @gmail.comで終わる
WHERE name LIKE '_a%'; -- 2文字目がa
INによる集合メンバーシップ
SELECT * FROM employees
WHERE department_id IN (1, 3, 5);
BETWEENによる範囲指定
SELECT * FROM orders
WHERE created_at BETWEEN '2025-01-01' AND '2025-12-31';
NULLチェック
SELECT * FROM employees
WHERE manager_id IS NULL; -- マネージャーが未割り当て
WHERE phone IS NOT NULL; -- 電話番号がある
条件の組み合わせ
AND、OR、NOTを使用して複雑なフィルターを構築します。括弧で評価順序を制御します:
SELECT * FROM employees
WHERE (department_id = 1 OR department_id = 3)
AND salary > 60000
AND name NOT LIKE 'Test%';
ユースケース
大きなテーブルからフィルタリングされたレコードのサブセットを取得する必要がある場合(例えば、特定の地域にいるアクティブな顧客で、過去90日以内にアカウントが作成されたものを検索する場合)。