Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

MySQLのWHERE BETWEEN句を使ったことはあるでしょうか。最初のうちはシンプルなSELECTステートメントで精一杯かもしれませんが、少し余裕が出てきたタイミングでぜひ使用してみることをおすすめします。今回の記事では、MySQL WHERE BETWEEN句の主な機能をご紹介しつつ、実際に使用する方法をハンズオンで体験していきましょう。

本記事の要点
  • MySQL WHERE BETWEEN句は範囲検索をする際に活躍
  • MySQLを使ったWHERE BETWEEN句のハンズオン

MySQL WHERE BETWEEN句とは

MySQLのWHERE BETWEEN句には指定した範囲に該当するレコードを出力する機能があります。指定できるものには文字列数値日付などがあり、範囲検索をする際に便利です。

実際にMySQL WHERE BETWEEN句の構文を見てみましょう。

SELECT カラム名 FROM テーブル名 WHERE カラム名 BETWEEN 最小値 AND 最大値;

BETWEENの後に「最小値」と「最大値」を指定することで、その範囲に該当するレコードを出力してくれます。

すでにSELECTステートメントの構文を知っている方であればWHERE BETWEEN句の加わる構文も難しくはないはず。実際にMySQLのWHERE BETWEEN句が使用されている構文を見て、さらに認識を深めましょう。

以下のようなテーブルがあることを前提とします。

foodsテーブル

+--------+-------+
| name   | price |
+--------+-------+
| Banana | 100   |
| Apple  | 200   |
| Bread  | 400   |
| Cookie | 240   |
| Beef   | 1000  |
| Onion  | 300   |
+--------+-------+

上記のテーブルからpriceカラムが「100」または「400」までのレコードを出力してみましょう。

WHERE BETWEEN句を含むSELECTステートメント

SELECT * FROM foods WHERE price BETWEEN 100 AND 400;

出力結果

+--------+-------+
| name   | price |
+--------+-------+
| Banana | 100   |
| Apple  | 200   |
| Bread  | 400   |
| Cookie | 240   |
| Onion  | 300   |
+--------+-------+
5 rows in set (0.00 sec)

WHERE BETWEEN句の範囲に「100〜400」と指定することで、priceカラムに「100〜400」の値が入っているレコードを出力できました。

次に文字列を範囲に指定してみましょう。

WHERE BETWEEN句を含むSELECTステートメント

SELECT * FROM foods WHERE name BETWEEN 'A' AND 'C';

出力結果

+--------+-------+
| name   | price |
+--------+-------+
| Banana | 100   |
| Apple  | 200   |
| Bread  | 400   |
| Beef   | 1000  |
+--------+-------+
4 rows in set (0.00 sec)

「BETWEEN ‘A’ AND ‘C’」と指定することで「頭文字がAからCの直前までの範囲のレコード」を出力することができます。

ポテパンダの一言メモ

文字列の範囲指定で分かったように「BETWEEN ‘A’ AND ‘C’」と指定すると、「頭文字Cのレコード」は出力されません。もし「頭文字C」までを含めたい場合には「BETWEEN ‘A’ AND ‘D’」と指定する必要があることを覚えておきましょう。

【関連作品】
▶︎MySQLのlimitのサンプルコード集 offset指定や効率的な件数取得方法は?
▶︎SQL having 集約関数の絞り込み whereよりもレスポンスが遅い理由とは?

MySQLでWHERE BETWEEN句ハンズオンにトライ

こちらでは、実際にMySQLというデータベースを使用してWHERE BETWEEN句を使ってみましょう。

準備

まずはMySQLを使用するための準備をしていきます。

MySQLのインストール・接続

まだMySQLをインストールしていない場合は、インストールしましょう。

$ brew install mysql

MySQLのインストールが終了したら、接続します。

$ sudo mysql -u root -p

データベースの作成

次にデータベースをMySQL上に作成し、使用するデータベースを指定しましょう。

mysql> CREATE DATABASE potepan;
Query OK, 1 row affected (0.00 sec)

mysql> USE potepan;

これでMySQLを使用する準備は完了しました。

ベースとなるテーブルの作成

次にベースとなるテーブルを作成しましょう。

mysql> CREATE TABLE students(name VARCHAR(50), age INT, birthday DATE);
Query OK, 0 rows affected (0.03 sec)

mysql> INSERT INTO students VALUES('Tanaka Taro', 12, '2007-12-20'),('Hamano Yoko', 18, '2001-01-12'),('Tada Tuyoshi', 15, '2004-05-04'),('Kotaki Saeko', 23, '1996-11-28'),('Rokuta Hajime', 9, '2010-10-23'),('Sato Yuka', 26, '1993-06-18');
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0

テーブルの状態

mysql> SELECT * FROM vegetables;
+---------------+------+------------+
| name          | age  | birthday   |
+---------------+------+------------+
| Tanaka Taro   |   12 | 2007-12-20 |
| Hamano Yoko   |   18 | 2001-01-12 |
| Tada Tuyoshi  |   15 | 2004-05-04 |
| Kotaki Saeko  |   23 | 1996-11-28 |
| Rokuta Hajime |    9 | 2010-10-23 |
| Sato Yuka     |   26 | 1993-06-18 |
+---------------+------+------------+

MySQL WHERE BETWEEN句を使った簡単な範囲検索

それでは、最初に見た例のような範囲検索を体験してみましょう。studentsテーブルから「10〜20歳」の範囲に当たるレコードを抽出します。

WHERE BETWEEN句を含むSELECTステートメント

mysql> SELECT * FROM students WHERE age BETWEEN 10 AND 20;

出力結果

+--------------+------+------------+
| name         | age  | birthday   |
+--------------+------+------------+
| Tanaka Taro  |   12 | 2007-12-20 |
| Hamano Yoko  |   18 | 2001-01-12 |
| Tada Tuyoshi |   15 | 2004-05-04 |
+--------------+------+------------+
3 rows in set (0.00 sec)

BETWEEN以降に「10 AND 20」と指定したことで、最小値10・最大値20の範囲に当たるレコードの抽出ができました。

ちなみにBETWEENの前に「NOT」をつけることで、指定範囲以外のレコードを出力することも可能です。

WHERE NOT BETWEEN句を含むSELECTステートメント

mysql> SELECT * FROM students WHERE age NOT BETWEEN 10 AND 20;

出力結果

+---------------+------+------------+
| name          | age  | birthday   |
+---------------+------+------------+
| Kotaki Saeko  |   23 | 1996-11-28 |
| Rokuta Hajime |    9 | 2010-10-23 |
| Sato Yuka     |   26 | 1993-06-18 |
+---------------+------+------------+
3 rows in set (0.00 sec)

MySQL WHERE BETWEEN句を使った簡単な範囲検索2

次に日付を指定して範囲検索を行い、結果を出力してみましょう。

WHERE BETWEEN句を含むSELECTステートメント

mysql> SELECT * FROM students WHERE birthday BETWEEN '2000-01-01' AND '2009-01-01';

出力結果

+--------------+------+------------+
| name         | age  | birthday   |
+--------------+------+------------+
| Tanaka Taro  |   12 | 2007-12-20 |
| Hamano Yoko  |   18 | 2001-01-12 |
| Tada Tuyoshi |   15 | 2004-05-04 |
+--------------+------+------------+
3 rows in set (0.00 sec)

BETWEEN以降に「’2000-01-01′ AND ‘2009-01-01’」と指定したことで、birthdayカラムが「2000年1月1日」から「2009年1月1日」の範囲に当たるレコードの抽出ができました。

MySQL WHERE BETWEEN句を使った簡単な範囲検索3

最後に文字列の範囲検索を行い、出力を行ってみましょう。

WHERE BETWEEN句を含むSELECTステートメント

mysql> SELECT * FROM students WHERE name BETWEEN 'H' AND 'T';

出力結果

+---------------+------+------------+
| name          | age  | birthday   |
+---------------+------+------------+
| Hamano Yoko   |   18 | 2001-01-12 |
| Kotaki Saeko  |   23 | 1996-11-28 |
| Rokuta Hajime |    9 | 2010-10-23 |
| Sato Yuka     |   26 | 1993-06-18 |
+---------------+------+------------+
4 rows in set (0.00 sec)

BETWEEN以降に「’H’ AND ‘T’」と指定したことで、nameカラムから「頭文字がH〜S(Tの1つ手前のアルファベット)」の範囲に当たるレコードの抽出ができました。

まとめ

今回の記事では、MySQL WHERE BETWEEN句の主な機能をご紹介しつつ、実際に使用する方法をハンズオンで体験していきました。使ってみると非常に簡単なWHERE BETWEEN句ですが、範囲検索を行う際には非常に便利です。ぜひ、範囲検索を行う際に利用してみましょう。

【関連記事】
▶︎MySQL Insert サンプルコード集 一文で一括挿入する方法とは?
▶︎【使いこなせる?】SQLのEXISTS文の使い方を初心者向けに解説

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。