問題 1
productsテーブルから price が 50000 以上の商品を取得してください
📖 解説参考資料
WHERE句の基本
特定の条件に合うデータだけを取得するには WHERE 句を使います。全データを取得してからアプリ側で絞り込むより、DBで絞り込む方が圧倒的に速く、通信コストも下がります。
SELECT *
FROM products
WHERE price > 50000;
比較演算子
| 演算子 | 意味 | 例 |
|---|---|---|
| = | 等しい | category = 'PC' |
| !=, <> | 等しくない | status != 'cancelled' |
| > | より大きい | price > 50000 |
| >= | 以上 | price >= 50000 |
| < | より小さい | price < 10000 |
| <= | 以下 | price <= 10000 |
文字列の条件
文字列はシングルクォートで囲みます。ダブルクォートはDBによっては動かないため、シングルクォートを使う習慣をつけましょう。
SELECT *
FROM users
WHERE city = '東京';
AND・OR で複数条件
ANDは「両方の条件を満たす」、ORは「どちらかを満たす」データを取得します。
SELECT *
FROM products
WHERE category = 'PC' AND price >= 100000;
⚠️ AND・OR の優先順位に注意
ANDはORより優先度が高いです。
例:
ANDはORより優先度が高いです。
WHERE A OR B AND C は WHERE A OR (B AND C) と解釈されます。意図した通りに動かすには括弧で明示しましょう。例:
WHERE (category = 'PC' OR category = 'Display') AND price > 50000
LIKE であいまい検索
% は任意の文字列、_ は任意の1文字を表します。
SELECT * FROM users WHERE name LIKE '田%'; -- 「田」で始まる
SELECT * FROM users WHERE name LIKE '%太郎'; -- 「太郎」で終わる
SELECT * FROM users WHERE email LIKE '%@example%'; -- 途中に含む
IN で複数値の指定
IN は複数の値をORで並べる代わりに使えます。値の数が増えても読みやすく保てます。
SELECT * FROM orders
WHERE status IN ('pending', 'cancelled');
BETWEEN で範囲指定
BETWEEN a AND b は a以上b以下(両端を含む)です。
SELECT * FROM products
WHERE price BETWEEN 5000 AND 50000;
💼 実務での使いどころ
ECサイト運用では「東京在住・購入金額5万円以上のユーザーにクーポンを送る」のようなターゲティングにWHERE句を多用します。
ECサイト運用では「東京在住・購入金額5万円以上のユーザーにクーポンを送る」のようなターゲティングにWHERE句を多用します。
IN は「特定のIDリストに一致するデータを抽出する」場面でも頻繁に登場します。