【SQL超入門講座】15.BETWEEN|区間を指定して抽出する方法

sql15
SQL超入門講座

この記事の執筆・監修

キノコード
キノコード

テクノロジーアンドデザインカンパニー合同会社のCEO。
日本最大級のプログラミング教育のYouTubeチャンネル「キノコード」や、プログラミング学習サービス「キノクエスト」を運営。
著書「あなたの仕事が一瞬で片付くPythonによる自動化仕事術」や、雑誌「日経ソフトウエア」や「シェルスクリプトマガジン」への寄稿など実績多数。

挨拶

こんにちは、キノコードです。
以前の動画、2つ以上の条件式を組み合わせてデータ抽出をする方法について解説しました。
そこの解説したAND条件の知識を使えば、売上金額が10000円以上、20000円以下といった条件を不等号を使ってデータ抽出することができます。
ただ、他にも、同様のこのことが、今回紹介するBETWEENを使うと、売上金額が10000円以上、20000円以下といった条件でデータ抽出することができます。
抽出結果は不等号を使ったやり方と同じですが、BETWEENを使うと可読性、つまり、判読しやすいSQLを書くことができます。
また、データ抽出の速度もあがります。
今までSQL超入門講座を勉強した方であれば、簡単にマスターできると思います。
最後までご視聴ください。

BETWEENについて

BETWEENは、冒頭でも話したように範囲指定をするときに使います。
BETWEENは、具体的には、WHERE句で使います。
範囲指定できるものとして、数値、日付や時間、文字列などを使用できます。
SQLを構文をみてみましょう。

SELECT *
FROM テーブル名
WHERE カラム名 BETWEEN 下限値 AND 上限値

この書き方だと「WHERE句のカラム名が下限値から上限値の間の値のデータを取ってくる」というSQL文です。
なお、以前のレッスンで解説をした、不等号を使っての書き方で表すと、こうなります。

SELECT *
FROM テーブル名
WHERE カラム名 >= 下限値 AND [カラム名] <= 上限値

BETWEENを使えば、カラム名を2回書かなくて済むのでSQL文がスッキリしますね。つまり、可読性があがります。
また、BETWEENの前にNOTをつけることで、指定範囲外の値を条件にして抽出することができます。
では、実際にテーブルを使って書いてみましょう。

BETWEENの使い方

まずはテーブルのtest_tableから、「売上金額」が「10000円以上、20000円以下」のデータを抽出してみましょう。
SQLはこのように書きます。

SELECT *
FROM test_table
WHERE 売上金額 BETWEEN 10000 AND 20000

これで、「売上金額」が「10000円以上20000円以下」のデータ35件抽出されました!
「売上金額」のカラムは数字型です。
したがって、今見たように、数字型の範囲指定はできますね。

では次に「売上日」が「2020年3月」のデータです。

SELECT *
FROM test_table
WHERE 売上日 BETWEEN '2020-03-01' AND '2020-03-31'

これで、「売上日」が「2020年3月」のデータが19件抽出されました。
「売上日」のカラムは文字列型です。
つまり、BETWEENは文字列の範囲指定もできるということです。
今回は日付型のカラムがないので割愛しますが、日付型でもデータ抽出することができます。

SELECT *
FROM test_table
WHERE 売上金額 NOT BETWEEN 10000 AND 20000

それではこの条件で、以前のレッスンで使用した、「NOT」演算子と併用してみましょう。
WHEREで指定したカラムの後にNOTをつけることで、「売上金額」が「10000円以上20000円以下」「以外」ということになります。
つまり、「売上金額」が「10000円未満、または、20000円を超える」という条件です。
実行します。
189件のデータが抽出されました。

先ほど、「10000円以上、20000円以下」のデータは35件でした。
今回の「10000円以上、20000円以下」以外のデータは、189件でした。
トータルの件数が224件なので、正しく抽出できるていることが確認できます。
以上が、基本的なBETWEENの使い方です。

挨拶

さて、BETWEENの説明と使用例でしたが、いかがでしたでしょうか?
キノコードでは、これからも色々なSQLのコードについての動画を出していこうと思っています。
気に入っていただけましたら、ぜひチャンネル登録をお願いします!
それではまた次のレッスンで。