導入
WHERE の = や > だけでは書きにくい条件があります。「どんな都市があるか一覧したい」「名前に“田”が含まれる人」「東京か大阪の人」「20〜30歳」――こうした指定に使う道具をまとめて覚えます。
説明
DISTINCT ― 重複をまとめる。同じ値が何度も出るとき、DISTINCT を付けると重複を1つにまとめます。「この列にはどんな種類の値があるか」を知りたいときの定番です。
SELECT DISTINCT city FROM users;
LIKE ― あいまい検索。% は「任意の0文字以上」、_ は「任意の1文字」を表すワイルドカードです。
flowchart TB
L["LIKE のパターン"]
L --> P1["'田%' → 「田」で始まる"]
L --> P2["'%田%' → どこかに「田」を含む"]
L --> P3["'%子' → 「子」で終わる"]
L --> P4["'_田%' → 2文字目が「田」"]
SELECT name FROM users WHERE name LIKE '田%';
IN ― 複数の候補のどれか。OR を並べる代わりに、候補をカッコで並べます。
SELECT name, city FROM users WHERE city IN ('東京', '福岡');
BETWEEN ― 範囲(両端を含む)。age >= 25 AND age <= 35 と同じ意味を短く書けます。
SELECT name, age FROM users WHERE age BETWEEN 25 AND 35;
やってみよう
初期表示の DISTINCT を実行して、都市が重複なく出ることを確認しましょう。次に SELECT name FROM users WHERE name LIKE '%田%'; を試して、名前に「田」を含む会員を探してみてください。
演習
users テーブルから、大阪または福岡に住んでいる会員の name と city を、IN を使って取り出してください。
ヒント1を見る
候補をカッコで並べます。WHERE city IN ('大阪', '福岡')
ヒント2を見る
SELECT name, city FROM users WHERE city IN ('大阪', '福岡');