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以下の行を取得する、という意味になります。