PostgreSQLのBETWEEN完全ガイド|初心者でもわかる範囲検索とWHERE句の使い方
生徒
「年齢が二十歳から三十歳までの人を探したいんですけど、条件をたくさん書かないといけないんですか?」
先生
「実は、範囲をまとめて指定できるBETWEENという書き方があります」
生徒
「英語が苦手なんですが、BETWEENって難しくないですか?」
先生
「意味はとてもシンプルです。『この値とこの値の間』という指定を一行で書けます」
生徒
「パソコンをほとんど触ったことがなくても使えますか?」
先生
「紙の名簿で年齢を範囲指定する感覚で考えれば大丈夫です」
1. SQLとは何か?
SQLは、データベースという「情報を整理して保存する箱」に指示を出すための言葉です。データベースの中では、情報は表の形で管理されています。
この表は、学校の名簿や会社の社員一覧表と同じように、行が一人分の情報、列が項目になっています。SQLを使うことで、この表の中から必要な行だけを探し出すことができます。
2. 条件検索とWHERE句の考え方
条件検索とは、表に書かれているすべての行を見るのではなく、「この条件に当てはまる行だけ見たい」と指定することです。
SQLではWHERE句を使って条件を指定します。例えば、年齢が二十歳以上の人だけを表示したい場合、その条件をWHERE句に書きます。
条件を組み合わせると、検索は少し長くなりがちですが、そこで役立つのがBETWEENです。
3. 検索に使うサンプルテーブル
ここでは、次のようなusersテーブルを使って説明します。
id | name | age | email
---+----------+-----+-------------------
1 | 山田太郎 | 18 | taro@example.com
2 | 佐藤花子 | 22 | hanako@example.com
3 | 鈴木一郎 | 25 | ichiro@example.com
4 | 高橋次郎 | 30 | jiro@example.com
5 | 田中美咲 | 35 | misaki@example.com
6 | 小林健太 | 40 | kenta@example.com
この表には、年齢がバラバラの人が登録されています。この中から、年齢の範囲を指定して検索してみましょう。
4. BETWEENを使わない範囲検索の書き方
まずは、BETWEENを使わずに範囲検索をする方法です。
SELECT *
FROM users
WHERE age >= 20
AND age <= 30;
id | name | age | email
---+----------+-----+-------------------
2 | 佐藤花子 | 22 | hanako@example.com
3 | 鈴木一郎 | 25 | ichiro@example.com
4 | 高橋次郎 | 30 | jiro@example.com
このように、二つの条件を書けば範囲検索はできます。ただし、条件が増えると読みづらくなります。
5. BETWEENで範囲検索をシンプルに書く
BETWEENを使うと、先ほどと同じ条件を一行で書けます。
SELECT *
FROM users
WHERE age BETWEEN 20 AND 30;
id | name | age | email
---+----------+-----+-------------------
2 | 佐藤花子 | 22 | hanako@example.com
3 | 鈴木一郎 | 25 | ichiro@example.com
4 | 高橋次郎 | 30 | jiro@example.com
BETWEENは「以上」「以下」をまとめて指定します。二十歳も三十歳も、どちらも含まれている点が重要です。
6. BETWEENのイメージを日常生活で考える
BETWEENは、テストの点数で「六十点から八十点までの人」と探すイメージに近いです。境界の数字も含めて考えます。
そのため、「ちょうど三十歳の人を含めたくない」といった場合は、BETWEENではなく、比較演算子を使った方が分かりやすいこともあります。
7. 数値以外でも使えるBETWEEN
BETWEENは数値だけでなく、日付や文字の並びにも使えます。ここでは考え方だけ覚えておきましょう。
SELECT *
FROM users
WHERE age BETWEEN 25 AND 40;
id | name | age | email
---+----------+-----+-------------------
3 | 鈴木一郎 | 25 | ichiro@example.com
4 | 高橋次郎 | 30 | jiro@example.com
5 | 田中美咲 | 35 | misaki@example.com
6 | 小林健太 | 40 | kenta@example.com
指定した範囲に入っている行が、まとめて表示されます。
8. BETWEENを使うときの注意点
BETWEENはとても便利ですが、「境界の値を含む」という特徴を必ず覚えておく必要があります。
また、範囲の順番を間違えると結果が出ません。必ず「小さい値 AND 大きい値」の順で書きます。
初心者のうちは、実行結果を見ながら、どの行が表示されるかを確認することで理解が深まります。