検索条件を指定するには「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
を使う。 - ある値より大きいか、小さいかの検索条件を指定する場合は、
>
、<
、>=
、<=
を使う。