MySQLで検索条件を指定する(where の使い方)

検索条件を指定するには「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;

 

コマンドを実行すると、以下のように条件に一致するデータが表示されました。

 

ANDOR を組み合わせて、複雑な条件も指定できます。

以下は 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」コマンドで検索条件を指定することができる。
  • ある値に一致しているかの検索条件を指定する場合は = を使う。
  • 複数の検索条件を指定する場合は ANDOR を使う。
  • ある値より大きいか、小さいかの検索条件を指定する場合は、><>=<= を使う。

 

MySQL入門メニュー