シリーズも回を重ね4回目となります。今回は初心者訓練所#04として、WHERE句でよく使われる便利な句について説明していきます。その中でも、データを比較する句について紹介していきます。
BETWEEN句の基本構文(範囲指定ができる句)
「AND」と対で使用し、項目Xが値Yと値Zの範囲内のデータを対象とします。「項目X >= 値Y AND 項目X <= 値Z」と同じ条件になりますが、簡略化して記載できるので便利です。
但し、比較対象の条件の一方でも「>」や「<」の場合は使用できません。
項目X BETWEEN 項目Y AND 項目Z |
BETWEEN句の使用例
準備として、確認用のテーブルを作成してデータを挿入してみましょう。
create table tbl_employees (emp_code integer , emp_name text , kana text , gender text , birthday text , dept_code integer); |
insert into tbl_employees values ('1','HoriiTaro','ホリイタロウ','M','1970-12-27','1'); insert into tbl_employees values ('2','IshimuraHana','イシムラハナ','F','1981-09-01','2'); insert into tbl_employees values ('3','KitajimaRuna','キタジマルナ','F','1981-11-30','3'); insert into tbl_employees values ('4','MuroiYuri','ムロイユリ','F','1982-02-12','1'); insert into tbl_employees values ('5','KitazawaAika','キタザワアイカ','F','1980-08-05','1'); insert into tbl_employees values ('6','MitaniKoukiti','ミタニコウキチ','M','1979-03-16','2'); |
select文で登録内容を確認してみましょう。
select * from tbl_employees; |
insert文で作成した6件のデータを確認できます。
それでは、BETWEEN句を使用してデータを取得してみましょう。
select emp_name,birthday from tbl_employees where birthday BETWEEN '1981-09-01' AND '1981-11-30'; |
「birthday」が、1981年9月1日~1981年11月30日に該当する2件のデータが取得されています。
次に、BETWEEN句を使用しないで実行してみましょう。
select emp_name,birthday from tbl_employees where birthday >= '1981-09-01' and birthday <='1981-11-30'; |
BETWEEN句を使用した場合と同じデータが、取得できることが確認できます。
このようにBETWEEN句は範囲指定の条件を簡略化して記載できるので便利です。
しかし、前述したとおり、比較対象の条件の一方でも「=」がない「>」や「<」の場合は利用できませんので注意してください。
BETWEEN句の説明は以上になります。
LIKE句の基本構文(あいまい検索ができる句)
項目Xに値Yで指定したパターンが含まれているデータを対象とします。比較する場合、大文字、小文字の区別はしません。
値Yのワイルドカードとして、以下の文字があります。
「 % 」 : 任意の0文字以上の文字列
「 _ 」(半角ハイフン) : 任意の1文字
項目X LIKE 値Y |
LIKE句の使用例
先ほど使用したテーブル「tbl_employees」を使用して確認してみましょう。
「kana」の先頭が、「イ」で始まるデータを取得する前方一致検索をしてみましょう。
select emp_name,kana from tbl_employees where kana LIKE 'イ%'; |
ワイルドカードの「%」を使用して、先頭文字が「イ」でそれ以降の文字は任意の文字列のデータを取得しています。
次に、「kana」の2文字目が、「ロ」で始まるデータを取得してみましょう。
select emp_name,kana from tbl_employees where kana LIKE '_ロ%'; |
ワイルドカードの「_」を使用して、先頭は任意の1文字で2文字目が「ロ」、そしてそれ以降はワイルドカードの「%」を使用して任意の文字列のデータを取得しています。
最後に、「kana」に「ウ」が含まれる部分一致検索をしてみましょう。
select emp_name,kana from tbl_employees where kana LIKE '%ウ%'; |
ワイルドカードの「%」で文字「ウ」を挟み込んで、「ウ」の前方、後方が任意の文字列のデータを取得しています。
このようにLIKE句は、あいまい検索に便利な句なのでワイルドカードと合わせて覚えておきましょう。
LIKE句の説明は以上になります。
IN句の基本構文(複数の値による検索がしやすい句)
項目Xの値が指定した複数の値に含まれている場合、対象となります。
また、副問合せを使用して他のテーブルから取得した値と比較することも出来ます。(副問合せについては、別の訓練所で詳しく説明させていただきます。)
WHERE 項目X IN ( 値Y , 値Z・・・) |
WHERE 項目X IN ( SELECT 項目Y FROM テーブルZ ) |
IN句の使用例
今迄と同様にテーブル「tbl_employees」を使用して確認してみましょう。
select文で再度、データを確認してみます。
select * from tbl_employees; |
それでは、値を直接指定してIN句を実行してみましょう。
「dept_code」の値が、「2」か「3」のデータを取得してみましょう。
select emp_name,dept_code from tbl_employees where dept_code IN ( 2 , 3 ); |
「dept_code」が「2」または「3」のデータが3件取得されます。
次にIN句に「NOT」を追加して試してみましょう。
select emp_name,dept_code from tbl_employees where dept_code NOT IN ( 2 , 3 ); |
「NOT IN」として実行すると、指定した値(2、3)以外のデータが3件取得されます。
続いて、他のテーブルから取得した値と比較するパターンを確認してみましょう。
確認用に、追加でテーブル「tbl_dept」を作成して、データを挿入してみましょう。
create table tbl_dept (dept_code integer,dept_name text,valid_flg integer); |
insert into tbl_dept values ('1','技術部','1'); insert into tbl_dept values ('2','人事部','0'); insert into tbl_dept values ('3','総務部','1'); insert into tbl_dept values ('4','経理部','0'); |
select文で登録内容を確認してみましょう。
select * from tbl_dept; |
insert文で作成した4件のデータを確認できます。
それでは、テーブル「tbl_employees」から、「dept_code」がテーブル「tbl_dept」で「valid_flg = 1」の「dept_code」と同じデータを取得してみましょう。
select emp_name,dept_code from tbl_employees where dept_code IN ( select dept_code from tbl_dept where valid_flg =1 ); |
IN句の後に記述された副問合せで、テーブル「tbl_dept」から取得した「dept_code」=1,3に一致するデータが取得されています。(副問合せの詳細については、別の訓練所で説明します)
IN句の説明は以上になります。
おすすめの学習コンテンツ
本記事を読み終わって、さらに学びたい方、次は問題にチャレンジしてみたい方には、以下の無料コンテンツをご用意しておりますので、ぜひ活用してみてください!
SQLiteについて
・本記事で使用したデータベース「SQLite」について解説する資料です。
SQLiteとは?他のデータベースとの違いも解説
SQLの教科書
・一般的な解説から、実際にSQLを動かす操作イメージまで幅広く解説する資料です。
「SQLの教科書」ビックデータ時代の必須科目
SQL無料トライアルテスト
・TOPSIC-SQLの無料トライアルテストをご受験していただけます。
TOPSIC-SQL無料トライアルテスト
SQLコンテスト
・簡単な会員登録をするだけでSQLのオンラインコンテストに無料で参加できます。
過去に開催されたコンテストの問題にもチャレンジできます。
TTOPSIC SQL CONTEST
SQL基礎解説YouTube
・「TOPSIC-SQL」を元にしたオンラインウェビナーです。
SQL-BOOT CAMP #1
ビッグデータ時代の必須科目SQLを学ぶ「実戦で通用する武器を身につけよう!」
まとめ
本記事では、初心者訓練所の第4弾として、データの比較に便利な句について一部を紹介しました。データの絞り込みや検索等には欠かせない句になりますので、是非、使い方をマスターして活用してください。
それでは、次の初心者訓練所で更なるスキルアップを目指しましょう!
(株)システムインテグレータ 製品企画室 元鬼軍曹 久保 司
- カテゴリ: