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;         -- 電話番号がある

条件の組み合わせ

ANDORNOTを使用して複雑なフィルターを構築します。括弧で評価順序を制御します:

SELECT * FROM employees
WHERE (department_id = 1 OR department_id = 3)
  AND salary > 60000
  AND name NOT LIKE 'Test%';

ユースケース

大きなテーブルからフィルタリングされたレコードのサブセットを取得する必要がある場合(例えば、特定の地域にいるアクティブな顧客で、過去90日以内にアカウントが作成されたものを検索する場合)。

試してみる — SQL Cheat Sheet

フルツールを開く