SELECT文を覚えたらWHERE句を使いこなせるようになりたいと思います。
動作環境
SQL FIDDLEでMySQL5.6、PostgreSQL9.6、SQLiteで動作確認しました。
下記文章は主にPostgreSQLで仕様で調べています。
WHERE句とは
WHERE句を使うとテーブルの中身を条件付きで取せるようになります。
SELECT文だけでなくupdate文、insert文(SELECT併用)、delete文でも使用できます。
構文
SELECT文の例です。
SELECT 列名1, 列名2… FROM テーブル名 WHERE 条件
実際にWHERE句を使ってみよう
それでは実際にSELECT文のWHERE句を使ってテーブルの中身を取得してみましょう。
使用するテーブル情報
以下のテーブルがあるとします。
ItemID | ItemName | Quantity | ArriveDate | AREA |
---|---|---|---|---|
1 | ゼリー | 30 | 2020-04-20 | 東京 |
2 | プリン | 25 | 2020-04-20 | 大阪 |
3 | ゼリー | 30 | 2020-04-23 | 東京 |
4 | ティラミス | 15 | 2020-04-22 | 大阪 |
5 | ヨーグルト | 30 | 2020-04-20 | 東京 |
6 | ゼリー | 20 | 2020-04-22 | 大阪 |
以下練習用テーブル作成コードです。
— CREATE文
CREATE TABLE item (
ItemID numeric(8, 0) unique not null,
ItemName character varying (20) not null,
Quantity numeric(8, 0),
ArriveDate DATE,
AREA character varying (20),
primary key(ItemID)
);
— INSERT文
insert into item
values(0001, ‘ゼリー’, 30, ‘2020-04-20’, ‘東京’),
(0002, ‘プリン’, 25, ‘2020-04-20’, ‘大阪’),
(0003, ‘ゼリー’, 30, ‘2020-04-23’, ‘東京’),
(0004, ‘ティラミス’, 15, ‘2020-04-22’, ‘大阪’),
(0005, ‘ヨーグルト’, 30, ‘2020-04-20’, ‘東京’),
(0006, ‘ゼリー’, 20, ‘2020-04-22’, ‘大阪’);
ItemNameがゼリーのものを抽出する
上記のテーブルから列名がItemNameで中身がゼリーのものを抽出する文を考えてみましょう。
まずは実行結果からです。このような結果になるSQL文を作ってみましょう。
実行結果
ItemID | ItemName | Quantity | ArriveDate | AREA |
---|---|---|---|---|
1 | ゼリー | 30 | 2020-04-20 | 東京 |
3 | ゼリー | 30 | 2020-04-23 | 東京 |
6 | ゼリー | 20 | 2020-04-22 | 大阪 |
答え
答えの例は以下のようになります。
SELECT * from item WHERE ItemName = ‘ゼリー’;
「ItemName = ‘ゼリー’」でItemNameがゼリーのものを抽出しています。ゼリーは文字列なのでシングルクォーテーションで囲います。(例えばnumericなどの数値を扱うデータ型の場合はシングルクォーテーションがなくてもSQL文では読み込みます)
ArrivalDateが2020-04-20でAreaが東京のものを抽出する
上記のテーブルからArrivalDateが2020-04-20でAreaが東京のものを抽出してみましょう。
まずは実行結果からです。このような結果になるSQL文を作ってみましょう。
ItemID | ItemName | Quantity | ArriveDate | AREA |
---|---|---|---|---|
1 | ゼリー | 30 | 2020-04-20 | 東京 |
5 | ヨーグルト | 30 | 2020-04-20 | 東京 |
答え
SELECT * from item
WHERE
ArriveDate = ‘2020-04-20’ and Area = ‘東京’ ;
条件は複数書くことができます。複数書くときは「and」で条件をつなげます。
UPDATE文でWHERE句を使ってみる
せっかくなのでSELECT文以外でもWHERE句を使ってみましょう。
以下のようにティラミスを濃厚ティラミスへ変更してみましょう。
ItemID | ItemName | Quantity | ArriveDate | AREA |
---|---|---|---|---|
1 | ゼリー | 30 | 2020-04-20 | 東京 |
2 | プリン | 25 | 2020-04-20 | 大阪 |
3 | ゼリー | 30 | 2020-04-23 | 東京 |
4 | 濃厚ティラミス | 15 | 2020-04-22 | 大阪 |
5 | ヨーグルト | 30 | 2020-04-20 | 東京 |
6 | ゼリー | 20 | 2020-04-22 | 大阪 |
行を書き換える時はUPDATE文を使います。
答え
//Update文でItemIdが0004のItemNameを濃厚ティラミスに更新
UPDATE item set ItemName = ‘濃厚ティラミス’ where ItemID = 0004;
//SELECT文でテーブルを呼び出し
SELECT * FROM item;
おわり
WHERE句が使えるとより複雑なデータが抽出できてかっこいいですね。