データベース

【SQL】条件付きのSELECT文の使い方

SQLの条件付きSELECT文の使い方

本記事では、SELECT文の中でも条件付き(WHERE句)を使った構文の説明をします!

SELECT文の構文

まず、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_IDEmployee_NameDepartment_IDPhone
0001鈴木 一郎011111-1111
0002鈴木 二郎022222-2222
0003鈴木 三郎033333-3333
Employee表
Employee_IDEmployee_Name
0001鈴木 一郎
0002鈴木 二郎
0003鈴木 三郎
検索結果

比較述語 ”=”、”<>”、”<”、”>”

WHERE句内には、比較を表す条件を記載することができます。

●”=”は、等しい条件
●”<>”は、等しくない条件
●”<”は、より小さい条件
●”>”は、より大きい条件

を表します。
また、”<=” や ”>=” と書くことで、以下や以上を表すこともできます。

”=”を使った検索

【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 = ~;

(例)Employee表の中から、従業員IDが0001の従業員情報を取り出す。

SELECT * FROM Employee WHERE Employee_ID = 0001;

Employee_IDEmployee_NameDepartment_IDPhone
0001鈴木 一郎011111-1111
0002鈴木 二郎022222-2222
0003鈴木 三郎033333-3333
Employee表
Employee_IDEmployee_NameDepartment_IDPhone
0001鈴木 一郎011111-1111
検索結果

IN 述語

WHERE句に”IN”を用いると、複数のデータ値で検索することができます。

”IN”を使った検索

【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 IN (値, 値, …);

(例)Employee表の中から、従業員IDが0001か0002の従業員情報を取り出す。

SELECT * FROM Employee WHERE Employee_ID IN (0001, 0002);

Employee_IDEmployee_NameDepartment_IDPhone
0001鈴木 一郎011111-1111
0002鈴木 二郎022222-2222
0003鈴木 三郎033333-3333
Employee表
Employee_IDEmployee_NameDepartment_IDPhone
0001鈴木 一郎011111-1111
0002鈴木 二郎022222-2222
検索結果

LIKE 述語

WHERE句に”LIKE”を用いると、指定した文字列パターンにマッチするデータを取り出すことができます。

”LIKE”には、以下の記号を使います。
●”%” ・・・任意の一文字以上の文字列を表す。
●”_”  ・・・任意の一文字を表す。

”LIKE”を使った検索

【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 LIKE '文字';

(例)Employee表の中から、従業員名に「ニ」が付く従業員情報を取り出す。

SELECT * FROM Employee WHERE Employee_Name LIKE '%ニ%';

Employee_IDEmployee_NameDepartment_IDPhone
0001鈴木 一郎011111-1111
0002鈴木 二郎022222-2222
0003鈴木 三郎033333-3333
Employee表
Employee_IDEmployee_NameDepartment_IDPhone
0002鈴木 二郎022222-2222
検索結果

NULL 述語

WHERE句に”NULL”あるいは”NOT NULL”を用いると、指定の列内にデータの入っていない(NULL)行、またはNULLではない行を取り出すことができます。

”NULL”を使った検索

【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 IS [NOT] NULL;

(例)Employee表の中から、電話番号がない人の従業員情報を取り出す。

SELECT * FROM Employee WHERE Phone IS NULL;

Employee_IDEmployee_NameDepartment_IDPhone
0001鈴木 一郎011111-1111
0002鈴木 二郎022222-2222
0003鈴木 三郎03NULL
Employee表
Employee_IDEmployee_NameDepartment_IDPhone
0003鈴木 三郎03NULL
検索結果

BETWEEN 述語

WHERE句に”BETWEEN”を用いると、指定した値の範囲内のデータ(BETWEEN)、あるいは範囲外のデータ(NOT BETWEEN)を取り出すことができます。

”BETWEEN”を使った検索

【構文】
SELECT 列名 FROM テーブル名 WHERE 列名 [NOT] BETWEEN 値 AND 値;

(例)Employee表の中から、給料が10000~20000の人の従業員情報を取り出す。

SELECT * FROM Employee WHERE Salary BETWEEN 10000 AND 20000;

Employee_IDEmployee_NameDepartment_IDPhoneSalary
0001鈴木 一郎011111-111110000
0002鈴木 二郎022222-222218000
0003鈴木 三郎03NULL25000
Employee表
Employee_IDEmployee_NameDepartment_IDPhoneSalary
0001鈴木 一郎011111-111110000
0002鈴木 二郎022222-222218000
検索結果

まとめ

以上が、SELECT文における条件付き検索の代表的なものです。これらで基本的には条件を指定することができます。

SQLには、他にも合計を計算したりテーブルを結合したりするものがあります。
それらの使い方については、関連のSQLの記事で記載します。