本記事では、SELECT文の中でも条件付き(WHERE句)を使った構文の説明をします!
SELECT文の構文
まず、SELECT文は以下の構文で書かれます。
SELECT [取り出す列]
FROM [テーブル名]
WHERE [検索条件]
GROUP BY [グループ化項目]
HAVING [グループ化の条件]
ORDER BY [並べる形式(昇順、降順など)]
この中で、取り出すデータの条件を記載するのがWHERE句です。
では、さまざまなWHERE句を見ていきます。
さまざまな検索条件
全件検索
そもそもWHERE句がないと、選択した列の全件が検索されます。
また、SELECT * で全列を取り出すことができます。
【構文】
SELECT 列名 FROM テーブル名;
(例)Employee表の中から、全従業員のIDと名前を取り出す。
SELECT Employee_ID, Employee_Name FROM Employee;
Employee_ID | Employee_Name | Department_ID | Phone |
---|---|---|---|
0001 | 鈴木 一郎 | 01 | 1111-1111 |
0002 | 鈴木 二郎 | 02 | 2222-2222 |
0003 | 鈴木 三郎 | 03 | 3333-3333 |
Employee_ID | Employee_Name |
---|---|
0001 | 鈴木 一郎 |
0002 | 鈴木 二郎 |
0003 | 鈴木 三郎 |
比較述語 ”=”、”<>”、”<”、”>”
WHERE句内には、比較を表す条件を記載することができます。
●”=”は、等しい条件
●”<>”は、等しくない条件
●”<”は、より小さい条件
●”>”は、より大きい条件
を表します。
また、”<=” や ”>=” と書くことで、以下や以上を表すこともできます。
【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 = ~;
(例)Employee表の中から、従業員IDが0001の従業員情報を取り出す。
SELECT * FROM Employee WHERE Employee_ID = 0001;
Employee_ID | Employee_Name | Department_ID | Phone |
---|---|---|---|
0001 | 鈴木 一郎 | 01 | 1111-1111 |
0002 | 鈴木 二郎 | 02 | 2222-2222 |
0003 | 鈴木 三郎 | 03 | 3333-3333 |
Employee_ID | Employee_Name | Department_ID | Phone |
---|---|---|---|
0001 | 鈴木 一郎 | 01 | 1111-1111 |
IN 述語
WHERE句に”IN”を用いると、複数のデータ値で検索することができます。
【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 IN (値, 値, …);
(例)Employee表の中から、従業員IDが0001か0002の従業員情報を取り出す。
SELECT * FROM Employee WHERE Employee_ID IN (0001, 0002);
Employee_ID | Employee_Name | Department_ID | Phone |
---|---|---|---|
0001 | 鈴木 一郎 | 01 | 1111-1111 |
0002 | 鈴木 二郎 | 02 | 2222-2222 |
0003 | 鈴木 三郎 | 03 | 3333-3333 |
Employee_ID | Employee_Name | Department_ID | Phone |
---|---|---|---|
0001 | 鈴木 一郎 | 01 | 1111-1111 |
0002 | 鈴木 二郎 | 02 | 2222-2222 |
LIKE 述語
WHERE句に”LIKE”を用いると、指定した文字列パターンにマッチするデータを取り出すことができます。
”LIKE”には、以下の記号を使います。
●”%” ・・・任意の一文字以上の文字列を表す。
●”_” ・・・任意の一文字を表す。
【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 LIKE '文字';
(例)Employee表の中から、従業員名に「ニ」が付く従業員情報を取り出す。
SELECT * FROM Employee WHERE Employee_Name LIKE '%ニ%';
Employee_ID | Employee_Name | Department_ID | Phone |
---|---|---|---|
0001 | 鈴木 一郎 | 01 | 1111-1111 |
0002 | 鈴木 二郎 | 02 | 2222-2222 |
0003 | 鈴木 三郎 | 03 | 3333-3333 |
Employee_ID | Employee_Name | Department_ID | Phone |
---|---|---|---|
0002 | 鈴木 二郎 | 02 | 2222-2222 |
NULL 述語
WHERE句に”NULL”あるいは”NOT NULL”を用いると、指定の列内にデータの入っていない(NULL)行、またはNULLではない行を取り出すことができます。
【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 IS [NOT] NULL;
(例)Employee表の中から、電話番号がない人の従業員情報を取り出す。
SELECT * FROM Employee WHERE Phone IS NULL;
Employee_ID | Employee_Name | Department_ID | Phone |
---|---|---|---|
0001 | 鈴木 一郎 | 01 | 1111-1111 |
0002 | 鈴木 二郎 | 02 | 2222-2222 |
0003 | 鈴木 三郎 | 03 | NULL |
Employee_ID | Employee_Name | Department_ID | Phone |
---|---|---|---|
0003 | 鈴木 三郎 | 03 | NULL |
BETWEEN 述語
WHERE句に”BETWEEN”を用いると、指定した値の範囲内のデータ(BETWEEN)、あるいは範囲外のデータ(NOT BETWEEN)を取り出すことができます。
【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 [NOT] BETWEEN 値 AND 値;
(例)Employee表の中から、給料が10000~20000の人の従業員情報を取り出す。
SELECT * FROM Employee WHERE Salary BETWEEN 10000 AND 20000;
Employee_ID | Employee_Name | Department_ID | Phone | Salary |
---|---|---|---|---|
0001 | 鈴木 一郎 | 01 | 1111-1111 | 10000 |
0002 | 鈴木 二郎 | 02 | 2222-2222 | 18000 |
0003 | 鈴木 三郎 | 03 | NULL | 25000 |
Employee_ID | Employee_Name | Department_ID | Phone | Salary |
---|---|---|---|---|
0001 | 鈴木 一郎 | 01 | 1111-1111 | 10000 |
0002 | 鈴木 二郎 | 02 | 2222-2222 | 18000 |
まとめ
以上が、SELECT文における条件付き検索の代表的なものです。これらで基本的には条件を指定することができます。
SQLには、他にも合計を計算したりテーブルを結合したりするものがあります。
それらの使い方については、関連のSQLの記事で記載します。