検索条件を指定するには「WHERE」句を使います。
ここでは MySQLコマンド「WHERE」の具体的な使い方を解説していきます。
目次
「WHERE」の基本
「WHERE」はデータの検索条件を指定するときに使います。
例えば以下は「SELECT」文と組み合わせて使った場合の例。
SELECT * FROM テーブル名 WHERE 検索条件;SELECT 文の詳しい使い方はこちら。
ある値に一致しているかの検索条件を指定する(=)
実際にMySQLサーバーに接続し、データを取得してみましょう。
あらかじめ「test」データベースの「users」テーブルに、以下のようにデータが保存されている例で進めていきます。
| name | age | 
| 佐藤 | 21 | 
| 鈴木 | 25 | 
| 田中 | 21 | 
| 山田 | 32 | 
| 山下 | (NULL) | 
※「NULL」は値がないフィールド
データを保存するコマンド例
CREATE DATABASE test;USE test;CREATE TABLE users (name VARCHAR(100), age INT);INSERT INTO users (name, age) VALUES ('佐藤', 21);INSERT INTO users (name, age) VALUES ('鈴木', 25);INSERT INTO users (name, age) VALUES ('田中', 21);INSERT INTO users (name, age) VALUES ('山田', 32);INSERT INTO users (name) VALUES ('山下');CREATE DATABASE 文の詳しい使い方はこちら。
USE 文の詳しい使い方はこちら。
CREATE TABLE 文の詳しい使い方はこちら。
INSERT INTO 文の詳しい使い方はこちら。
それでは「users」テーブルから age が 21 のデータを検索してみましょう。コマンドは以下。
SELECT * FROM users WHERE age = 21;
コマンドを実行すると、以下のように条件に一致するデータが表示されました。

複数の検索条件を指定する(AND, OR)
複数の検索条件に一致するデータを検索するには AND を使います。
以下のコマンドで、name が「山田」、age が「32」のデータを検索できます。
SELECT * FROM users WHERE name = '山田' AND age = 32;
コマンドを実行すると、以下のように条件に一致するデータが表示されました。

複数の検索条件のどれかに一致するデータを検索するには OR を使います。
以下のコマンドで、age が「21」、もしくは「32」のデータを検索できます。
SELECT * FROM users WHERE age = 21 OR age = 32;
コマンドを実行すると、以下のように条件に一致するデータが表示されました。

AND と OR を組み合わせて、複雑な条件も指定できます。
以下は name が「山田」で、age が「21」もしくは「32」のデータを検索するコマンドです。
SELECT * FROM users WHERE name = '山田' AND (age = 21 OR age = 32);
ある値より大きいか、小さいかの検索条件を指定する(>, <, >=, <=)
ある値より大きいか、小さいかの検索条件を指定するには、>、<、>=、<= を使います。
以下のコマンドのように > を使うと、age が 25よりも大きいデータを検索できます。
SELECT * FROM users WHERE age > 25;
25以上(25も含める)を検索条件にする場合は、以下のように >= を使います。
SELECT * FROM users WHERE age >= 25;
同じように、25よりも小さいデータを検索する場合は以下のコマンド。
SELECT * FROM users WHERE age < 25;
25以下(25も含める)を検索条件にする場合は、以下のコマンド。
SELECT * FROM users WHERE age <= 25;
ここまでが「WHERE」の基本!
理解をさらに深めたい方は以下からの内容もご覧ください。
WHERE の検索条件で使える演算子一覧
以降の記事で詳しく解説していきますが、検索条件で使える演算子をかんたんにまとめておきます。
NULLかどうかの検索条件を指定する(IS NULL)
NULL(値がないフィールド)かどうかの検索条件を指定する場合は、IS NULL を使います。
以下は age が NULL のデータを検索するコマンドです。
SELECT * FROM users WHERE age IS NULL;
また、以下のように IS NOT NULL を使って、 age が NULL でないデータを検索することもできます。
SELECT * FROM users WHERE age IS NOT NULL;「IS NULL」や「IS NOT NULL」の使い方は、以降の記事で解説しています。詳しくはこちら。
いずれかの値に一致しているかの検索条件を指定する(IN)
いずれかの値に一致しているかの検索条件を指定する場合は、IN を使います。
以下は age が 21 か 25 に一致しているデータを検索するコマンドです。
SELECT * FROM users WHERE age IN (21, 25);
また、以下のように NOT IN を使って、 age が 21 と 25 に一致しないデータを検索することもできます。
SELECT * FROM users WHERE age NOT IN (21, 25);「IN」や「NOT IN」の使い方は、以降の記事で解説しています。詳しくはこちら。
ある特定の文字が含まれているか あいまい検索する(LIKE)
ある特定の文字が含まれているか あいまい検索する場合は、LIKE を使います。
以下は name が「山」から始まるデータを検索するコマンドです。
SELECT * FROM users WHERE name LIKE '山%';
また、以下のように NOT LIKE を使って、name が「山」から始まらないデータを検索することもできます。
SELECT * FROM users WHERE name NOT LIKE '山%';「LIKE」や「NOT LIKE」の使い方は、以降の記事で解説しています。詳しくはこちら。
ある範囲の値に含まれているかの検索条件を指定する(BETWEEN)
ある範囲の値に含まれているかの検索条件を指定する場合は、BETWEEN を使います。
以下は age が 21以上25以下のデータを検索するコマンドです。
SELECT * FROM users WHERE age BETWEEN 21 AND 25;
また、以下のように NOT BETWEEN を使って、age が 21以上25以下にあてはまらないデータを検索することもできます。
SELECT * FROM users WHERE age NOT BETWEEN 21 AND 25;「BETWEEN」や「NOT BETWEEN」の使い方は、以降の記事で解説しています。詳しくはこちら。
まとめ
以上、MySQLコマンド「WHERE」の使い方でした!
ここまでの内容をまとめておきます。
- 「WHERE」コマンドで検索条件を指定することができる。
- ある値に一致しているかの検索条件を指定する場合は =を使う。
- 複数の検索条件を指定する場合は ANDやORを使う。
- ある値より大きいか、小さいかの検索条件を指定する場合は、>、<、>=、<=を使う。
 
                

