本文へスキップ
BecomeCoder

SQL データ操作 (DML)コース · 第1章 データを取り出す · レッスン2

WHERE ― 条件で絞り込む

ブラウザで完結

導入

テーブル全体ではなく「条件に合う行だけ」が欲しいことがほとんどです。そこで使うのが WHERE 句。SELECT に条件を付け足して、行を絞り込みます。列を選ぶ「射影」に対して、行を選ぶこの操作を 選択(selection) と呼びます(=横方向に行を絞る)。

説明

WHEREFROM の後ろに書き、「この条件が真になる行だけ」を残します。

flowchart LR
    T["users の全行<br/>佐藤(東京)・鈴木(大阪)・高橋(東京)・田中(福岡)・伊藤(大阪)"]
    T -->|"WHERE city = '東京'<br/>(ふるいにかける)"| R["条件に合う行だけ<br/>佐藤・高橋"]
SELECT name, age, city FROM users WHERE city = '東京';

文字列'シングルクオート' で囲みます。等しいかどうかの比較は =(プログラミング言語と違い、イコール1つ)です。使える比較演算子はこれだけ覚えれば十分です。

演算子意味
=等しいcity = '東京'
<> / !=等しくないcity <> '東京'
> <より大きい/小さいage > 30
>= <=以上/以下age >= 30

複数の条件は AND(かつ)/OR(または)でつなげます。NOT で否定もできます。

SELECT name FROM users WHERE city = '大阪' AND age >= 30;

ANDOR が混ざるときは、( ) で囲んでまとまりを明示すると安全です(掛け算と足し算の優先順位のように、AND が先にまとまります)。

SELECT name FROM users WHERE city = '東京' AND (age < 25 OR age >= 40);

やってみよう

初期表示のクエリを実行して、東京在住の会員だけが出ることを確認しましょう。次に、条件を age < 30(30歳未満)に書き換えてみてください。

演習

products テーブルから、価格(price)が 5000 以上の商品nameprice を取り出してください。

ヒント1を見る

数値の比較なのでクオートは不要です。WHERE price >= 5000

ヒント2を見る

SELECT name, price FROM products WHERE price >= 5000;

実際に動かしてみよう

下のエディタにクエリを書いて「実行」を押すと、ブラウザ内のSQLiteで結果が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう。

SQL — ブラウザ内で実行(SQLite)

ブラウザ内でSQLを動かす環境(SQLite)を読み込みます(初回のみ一瞬)。
スクロールして表示された時点でも自動で読み込まれます。