前回の記事では、データベースのテーブルからデータを取得する際に使用するSELECTステートメントを紹介しました。
SELECTステートメントでは、SELECT句で取得する列を選択し、FROM句でデータを取得するテーブル(場所)を指定しました。
SELECT句とFROM句を使ったSQLでは、テーブルからすべての行(レコード)が取得されます。
しかし検索などの処理では、テーブルからデータを取得する際に特定のレコード(行)に絞りたい場合があります。
そこで今回は、取得するデータを絞り込む際に使用するWHERE句について紹介します。
目次
使用するサンプルテーブル
本記事では、WHERE句の説明に「従業員」という名前のテーブルを使用します。
「従業員」テーブルの定義は以下のようになります。
テーブル定義
列名 | データ型 | NULLを許容 |
---|---|---|
ID | int | No |
氏名 | nvarchar(50) | Yes |
性別 | nvarchar(10) | Yes |
部署 | nvarchar(20) | Yes |
テーブルを作成するCREATE文(SQL)
1 2 3 4 5 6 |
CREATE TABLE 従業員( ID int NOT NULL PRIMARY KEY, 氏名 nvarchar(50) NULL, 性別 nvarchar(10) NULL, 部署 nvarchar(20) NULL, ); |
テーブルにデータを挿入するINSERT文(SQL)
1 2 3 4 5 6 7 8 9 10 |
INSERT INTO 従業員 (ID, 氏名, 性別, 部署) VALUES (101, '佐藤 一郎', '男性', '営業部'), (102, '中村 花子', '女性', '総務部'), (103, '鈴木 次郎', '男性', '開発部'), (104, '山田 三郎', '男性', '営業部'), (105, '牛田 べこら', 'その他', '総務部'), (106, '馬田 ぱから', 'その他', '営業部'), (107, '杉本 舞', '女性', '開発部'); |
取得する行(レコード)を指定するWHERE
SELECTステートメントでテーブルからデータを取得するSQLは以下のようになります。
1 2 3 4 5 6 7 |
SELECT ID, 氏名, 性別, 部署 FROM 従業員 |
ここに取得する行を絞り込む条件を指定するためにWHEREを記述します。
WHERE句は、FROM句でテーブルを指定した後に記述します。
1 2 3 4 5 6 7 8 |
SELECT ID, 氏名, 性別, 部署 FROM 従業員 WHERE |
WHERE句には、取得する行を特定するための条件式を指定します。
例えば、「性別」が「男性」の行だけに絞り込みたい場合は、以下のSQLになります。
1 2 3 4 5 6 7 8 9 |
SELECT ID, 氏名, 性別, 部署 FROM 従業員 WHERE 性別 = '男性' |
上記のSQLを実行すると、以下のデータが取得されます。
性別が男性の「佐藤 一郎」「鈴木 次郎」「山田 三郎」の3行のレコードが取得できているのが確認できます。
複数の条件を指定して取得する行を絞り込む
WHERE句を使用することで、SELECTステートメントで取得する行を限定することができるようになりました。
ここまでの例では、WHERE句で行を特定するための条件は1つのみ指定していましたが、複数の条件を指定することもできます。
WHERE句で複数の条件式を記述する場合は、WHERE句に記述した条件式の後にANDを記述します。
1 2 3 4 5 6 7 8 9 10 |
SELECT ID, 氏名, 性別, 部署 FROM 従業員 WHERE 性別 = '男性' AND |
ANDの後は、WHERE句と同様に条件式を記述します。
1 2 3 4 5 6 7 8 9 10 11 |
SELECT ID, 氏名, 性別, 部署 FROM 従業員 WHERE 性別 = '男性' AND 部署 = '営業部' |
上記のSQLを実行すると、以下のデータが取得されます。
性別が男性である条件に加えて、部署が営業部である行の「佐藤 一郎」と「山田 三郎」が抽出対象になっていることが確認できます。