SQL の基本三本柱、SELECT・WHERE・ORDER BY。DS検定★で必出のコード読解パターン。
SQLって、データを取り出す言語だよね?
そう、SQLはリレーショナルデータベースを操作する言語。 まずはSELECT・WHERE・ORDER BYの3つを押さえましょう。
SELECT=取得する列、FROM=対象テーブル、WHERE=絞り込み条件、ORDER BY=並び替え。 この4つが基本構造。
実例が見たいですぅ♪
-- 売上が10000円以上の注文を、新しい順に取得 SELECT order_id, customer_id, amount, ordered_at FROM orders WHERE amount >= 10000 ORDER BY ordered_at DESC LIMIT 20;
このクエリでは、(1)4列を選んで、(2)orders テーブルから、(3)amount が10000以上のものを、(4)ordered_at の降順で並べて、(5)上位20件を取得しています。 LIMITは行数制限ね。
DESC は降順、ASC は昇順だよね?
その通り。 ORDER BY を省略すると並び順は保証されないので注意。
WHEREでNULLを扱うときって、ちょっと特別なんですよねぇ?
そうなの。 `column = NULL` と書いても True にはならないのよ。 NULL チェックには `column IS NULL` か `column IS NOT NULL` を使うのがルール。
他にWHEREで使える演算子は?
範囲: BETWEEN a AND b、 リスト: IN (a, b, c)、 文字列マッチ: LIKE 'パターン%'、 否定: NOT。 これらを組み合わせれば大抵のフィルタは書けるわ。
DS検定では『このSQLは何件返すか』『WHERE と AND/OR の優先順位』が問われやすい。 AND の方が OR より優先度が高いので、複合条件は括弧で明示するのが安全。
しっかり覚えますぅ♪
確認クイズ
次のSQLは何を表しているか。 SELECT * FROM users WHERE age >= 20 AND status = 'active' ORDER BY created_at DESC LIMIT 10;
- 20歳未満で非アクティブなユーザーを古い順に10件
- 20歳以上でアクティブなユーザーを登録新しい順に10件
- 全ユーザーを年齢の昇順で10件
- アクティブな全ユーザーを表示
こたえを見る
正解: 2. 20歳以上でアクティブなユーザーを登録新しい順に10件
20歳以上でアクティブなユーザーを登録新しい順に10件。 WHEREで2条件のAND、ORDER BY DESCで降順、LIMIT 10で件数制限という典型パターンです。