WHERE句を使ってみよう!SQL超初心者の勉強

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句を使ってテーブルの中身を取得してみましょう。

使用するテーブル情報

以下のテーブルがあるとします。

ItemIDItemNameQuantityArriveDateAREA
1ゼリー302020-04-20東京
2プリン252020-04-20大阪
3ゼリー302020-04-23東京
4ティラミス152020-04-22大阪
5ヨーグルト302020-04-20東京
6ゼリー202020-04-22大阪
item TABLE

以下練習用テーブル作成コードです。

-- 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文を作ってみましょう。

実行結果

ItemIDItemNameQuantityArriveDateAREA
1ゼリー302020-04-20東京
3ゼリー302020-04-23東京
6ゼリー202020-04-22大阪

答え

答えの例は以下のようになります。

SELECT * from item WHERE ItemName = 'ゼリー';

「ItemName = 'ゼリー'」でItemNameがゼリーのものを抽出しています。ゼリーは文字列なのでシングルクォーテーションで囲います。(例えばnumericなどの数値を扱うデータ型の場合はシングルクォーテーションがなくてもSQL文では読み込みます)

ArrivalDateが2020-04-20でAreaが東京のものを抽出する

上記のテーブルからArrivalDateが2020-04-20でAreaが東京のものを抽出してみましょう。
まずは実行結果からです。このような結果になるSQL文を作ってみましょう。

ItemIDItemNameQuantityArriveDateAREA
1ゼリー302020-04-20東京
5ヨーグルト302020-04-20東京

答え

SELECT * from item
WHERE
ArriveDate = '2020-04-20' and Area = '東京' ;

条件は複数書くことができます。複数書くときは「and」で条件をつなげます。

UPDATE文でWHERE句を使ってみる

せっかくなのでSELECT文以外でもWHERE句を使ってみましょう。
以下のようにティラミスを濃厚ティラミスへ変更してみましょう。

ItemIDItemNameQuantityArriveDateAREA
1ゼリー302020-04-20東京
2プリン252020-04-20大阪
3ゼリー302020-04-23東京
4濃厚ティラミス152020-04-22大阪
5ヨーグルト302020-04-20東京
6ゼリー202020-04-22大阪

行を書き換える時はUPDATE文を使います。

答え

//Update文でItemIdが0004のItemNameを濃厚ティラミスに更新
UPDATE item set ItemName = '濃厚ティラミス' where ItemID = 0004;

//SELECT文でテーブルを呼び出し
SELECT * FROM item;

おわり

WHERE句が使えるとより複雑なデータが抽出できてかっこいいですね。