WHERE 句で条件を絞り込む
SELECT 文でデータを取得するとき、WHERE 句を使うと条件を指定して絞り込めます。
基本構文
SELECT カラム名 FROM テーブル名 WHERE 条件;たとえば users テーブルから age が 20 の人だけを取得するには、こう書きます。
SELECT * FROM users WHERE age = 20;比較演算子
WHERE 句では、さまざまな比較演算子が使えます。
| 演算子 | 意味 |
|---|---|
| = | 等しい |
| != | 等しくない |
| < | より小さい |
| > | より大きい |
| <= | 以下 |
| >= | 以上 |
-- 20歳より上
SELECT * FROM users WHERE age > 20;
-- 30歳以下
SELECT * FROM users WHERE age <= 30;文字列の比較
文字列を比較するときは、シングルクォートで囲みます。
SELECT * FROM users WHERE name = '田中';NULL の判定
NULL かどうかを判定するには、= ではなく IS NULL を使います。
-- email が NULL の行
SELECT * FROM users WHERE email IS NULL;
-- email が NULL でない行
SELECT * FROM users WHERE email IS NOT NULL;= NULL と書いても期待どおりに動かないので注意してください。NULL は「値がない」という特殊な状態なので、= では比較できません。
AND と OR
複数の条件を組み合わせるには AND や OR を使います。
-- 20歳以上かつ東京在住
SELECT * FROM users WHERE age >= 20 AND city = '東京';
-- 東京か大阪に住んでいる
SELECT * FROM users WHERE city = '東京' OR city = '大阪';AND と OR を混ぜるときは、括弧を使って優先順位を明確にするとわかりやすくなります。
SELECT * FROM users
WHERE age >= 20 AND (city = '東京' OR city = '大阪');BETWEEN
範囲を指定するには BETWEEN を使います。
-- 20歳から30歳まで
SELECT * FROM users WHERE age BETWEEN 20 AND 30;これは age >= 20 AND age <= 30 と同じ意味です。両端の値も含まれます。
LIKE
部分一致で検索するには LIKE を使います。
-- 「田」で始まる名前
SELECT * FROM users WHERE name LIKE '田%';
-- 「田」を含む名前
SELECT * FROM users WHERE name LIKE '%田%';
-- 「田」で終わる名前
SELECT * FROM users WHERE name LIKE '%田';% は任意の文字列(0 文字以上)を表すワイルドカードです。_ を使うと任意の 1 文字を表せます。
WHERE 句を使いこなすと、必要なデータだけを効率よく取得できるようになります。












