よく利用される便利な「句」の紹介とクセ者「NULL」について
はじめに
2回目となる今回は、よく利用される便利な「句」の説明と、ちょっと紛らわしいNULL値について説明します。
なお、訓練に使用するデータベースは、前回に引き続きインストールが簡単な「SQLite」を使用します。テーブルやデータ作成のクエリも載せていますので、インストールがまだの方は、ぜひSQLiteをインストールし、実際に試してみてください。
それでは、今回も元気に訓練へ行ってみましょう!
便利な武器その2(句)
今回は、下表に示す3つの句、WHEREの中で利用される「BETWEEN
」と「LIKE
」、そして、SELECTの中で利用される「CASE
」を紹介します。
前回に引き続き、社員テーブル(tbl_employees
)に登録されているデータを使用して説明します。前回で社員テーブルを作成済みの場合は、ログイン後に下記のDELETEコマンドで社員テーブルを空にした後、INSERTコマンドで新たなデータを作成してください。社員テーブルを未作成の場合は、CREATEコマンドで社員テーブルを作成後にINSERTコマンドでデータを作成してください(DB作成やログインの詳細は前回の解説を参照)。
DELETE FROM tbl_employees;【CREATEコマンド】
CREATE TABLE tbl_employees (code INTEGER,name TEXT,kana TEXT,gender TEXT,birthday TEXT,PRIMARY KEY(code));【INSERTコマンド】
INSERT INTO tbl_employees (code,name,kana,gender,birthday) VALUES ('1','HORII SEITARO','ホリイセイタロウ','M', '1970-12-27') ,('2','ISHIMURA HANA','イシムラハナ', 'F','1981-08-24') ,('3','KITAJIMA RUNA','キタジマルナ','F', '1981-11-09') ,('4','MUROI YURI','ムロイユリ','F', '1982-02-12') ,('5','KITAZAWA AIKA','キタザワアイカ','F', '1980-08-05') ,('6','MITANI KOUKITI','ミタニコウキチ','M', '1979-03-16');
・社員テーブルを作成済みの場合(DELETE、INSERT)
・社員テーブル未作成の場合(CREATE、INSERT)
テーブルの内容を確認してみましょう。
.headers on -- ヘッダを表示します .mode column -- 項目の幅をそろえて表示します SELECT * FROM tbl_employees;
*「.headers」「.mode」は表示内容の設定コマンドなので、ログイン後に1回実行すればOKです。
(1)BETWEEN句
使用例では、誕生日(birthday)が1981年9月1日から1981年11月9日の間にあるデータを抽出しています。また、2つ目のクエリではBETWEEN
句を使用せずに、同じ条件のデータを抽出しています。
それでは、実際に入力して確認してみましょう。
SELECT name,birthday FROM tbl_employees WHERE birthday BETWEEN '1981-09-01' AND '1981-11-09'; SELECT name,birthday FROM tbl_employees WHERE birthday >= '1981-09-01' AND birthday <= '1981-11-09';
このように、BETWEEN
句は範囲指定の条件を簡略化して記載できるので便利です。ただし、図でも記載してあるように、比較対象の条件の一方でも「=」がない「>」や「<」の場合は利用できないので注意してください。
(2)LIKE句
使用例の1番目のクエリでは、「kana」の先頭が「イ」で始まるデータを取得する前方一致検索になります。ワイルドカードの「%」を使用して、先頭文字が「イ」でそれ以降の文字は任意の文字列のデータを取得しています。
2番目のクエリでは「kana」の2文字目が「ロ」で始まるデータを取得しています。ワイルドカードの「_」を使用して、先頭は任意の1文字で2文字目が「ロ」、そしてそれ以降はワイルドカードの「%」を使用して任意の文字列のデータを取得しています。
3番目のクエリでは「kana」に「ウ」が含まれるデータを取得する部分一致検索をしています。ワイルドカードの「%」で文字「ウ」を挟み込んで、「ウ」の前方、後方が任意の文字列のデータを取得しています。
それでは、実際に入力して確認してみましょう。
SELECT name,kana FROM tbl_employees WHERE kana LIKE 'イ%'; SELECT name,kana FROM tbl_employees WHERE kana LIKE '_ロ%'; SELECT name,kana FROM tbl_employees WHERE kana LIKE '%ウ%';
このように、LIKE
句は、あいまい検索に便利な句なので、ワイルドカードと合わせて覚えておきましょう。