SELECT文を使用してデータを検索する際、条件を指定して該当するデータのみを取り出すにはWHERE句を使います。
- SELECT基本構文
- SELECT <取得したい列名> FROM <テーブル名> WHERE <条件式>
取り出すデータを比較するための条件を指定するのがWHERE句です。WHERE句と一緒に比較演算子を利用して2つの値を比較します。
| 演算子 | 説明 |
|---|---|
| = | 等しい |
| <>、!= | 等しくない |
| >=、<= | 以上、以下 |
| >、< | より大きい、より小さい |
文字列を比較する場合は、シングルクォーテーション(’)で囲みます。数値を比較する場合は、囲む必要はありません。
以下は、比較演算子を用いた例です。
> SELECT * FROM stuff WHERE description = '社長'; +------+-------------+ | name | description | +------+-------------+ | 岡本 | 社長 | +------+-------------+
IN演算子
WHERE句では、IN演算子と言われるものも使用可能です。
- IN演算子 基本構文
- <式> IN (<値1>, …)
例えば、次のようなテーブルがあったとします。
> SELECT * FROM sample01; +----------+ | name | +----------+ | poppo111 | | fire | | mu02 | +----------+
このテーブルから、name列の値が「fire」と「mu02」となる行を取得した場合、次のようにIN句を使用することで行えます。
> SELECT * FROM sample01 WHERE name IN('fire','mu02');
+------+
| name |
+------+
| fire |
| mu02 |
+------+
IN演算子は「IN (値1, 値2, 値3, …)」のように、列の値がINの後に続くカッコ内のどれかの値と一致すれば、条件に一致したことになり、その行を取り出されます。
これと同じ条件を指定したい場合、次のように書くこともできます。
> SELECT * FROM sample01 WHERE name = 'fire' OR name = 'mu02';
条件をORでつなぐことで、「fire」または「mu02」ということになります。この書き方でも良いですが、IN演算子を使った方が見やすくなります。
INの前にNOTを付けることで、IN演算子の逆、つまり、カッコ内のものを含まない、という条件になります。
> SELECT * FROM sample01 WHERE name NOT IN('fire','mu02');
+----------+
| name |
+----------+
| poppo111 |
+----------+
BETWEEN演算子
値の範囲に当てはまる行を検索するにはBETWEEN演算子が便利です。
例えば、次のようなテーブルがあったとします。
> SELECT * FROM stuff; +------+--------------------------+------+ | name | description | age | +------+--------------------------+------+ | 大崎 | 会長 | 66 | | 岡本 | 社長 | 53 | | 松本 | ダウンタウン、浜田の相方 | 55 | +------+--------------------------+------+
BETWEEN演算子は、ある範囲にある値を検索します。構文は以下になります。
- BETWEEN演算子 基本構文
- <式> BETWEEN <値1> AND <値2>
「値1」よりも大きいか等しく、かつ、「値2」より小さいか等しいかどうかを比較します。
> SELECT * FROM stuff WHERE age BETWEEN 50 AND 60; +------+--------------------------+------+ | name | description | age | +------+--------------------------+------+ | 岡本 | 社長 | 53 | | 松本 | ダウンタウン、浜田の相方 | 55 | +------+--------------------------+------+
上記例では、「age」列の値が50以上かつ60以下の行を取得する、という意味になります。
