SQLの演算子を完全ガイド!初心者でもわかるデータの比較と検索方法
新人
「SQLでデータを検索するときに、特定の条件に合うものだけ取得したいです!」
先輩
「そういうときは演算子を使うんだ。データを比較したり、範囲を指定したりするのに便利だよ。」
新人
「演算子って、どんなものがあるんですか?」
先輩
「例えば、イコール(=)で一致するデータを取得したり、不等号(>, <)で範囲を指定したりできるよ。まずは基本から学んでいこう!」
1. 演算子とは?
SQLの演算子は、データを比較したり、条件を指定して検索したりするために使われる記号やキーワードのことです。
主な演算子の種類
- 比較演算子(=, !=, <, >, <=, >=): データの大小や一致を比較
- 論理演算子(AND, OR, NOT): 条件を組み合わせる
- 範囲演算子(BETWEEN, IN): 範囲やリストを指定
- 文字列検索演算子(LIKE): 部分一致検索
今回は、比較演算子を詳しく解説します。
2. 比較演算子の使い方
比較演算子を使うと、特定の条件に一致するデータを検索できます。
1. イコール(=)
イコール(=)は、指定した値と一致するデータを取得するときに使います。
SELECT * FROM employee WHERE department = '営業';
このSQLを実行すると、営業部の社員のみが取得されます。
| id | name | age | department | salary |
|---|---|---|---|---|
| 1 | 田中 太郎 | 30 | 営業 | 5000000 |
2. ノットイコール(!= または <>)
ノットイコール(!= または <>)を使うと、指定した値と一致しないデータを取得できます。
SELECT * FROM employee WHERE department != '営業';
このSQLを実行すると、営業部以外の社員が取得されます。
| id | name | age | department | salary |
|---|---|---|---|---|
| 2 | 佐藤 花子 | 25 | マーケティング | 4200000 |
| 3 | 鈴木 一郎 | 35 | 開発 | 6000000 |
3. 大小比較(<, >, <=, >=)
数値や日付を比較するときに使います。
年齢が30歳以上の社員を取得
SELECT * FROM employee WHERE age >= 30;
このSQLを実行すると、30歳以上の社員が取得されます。
| id | name | age | department | salary |
|---|---|---|---|---|
| 1 | 田中 太郎 | 30 | 営業 | 5000000 |
| 3 | 鈴木 一郎 | 35 | 開発 | 6000000 |
給与が500万円未満の社員を取得
SELECT * FROM employee WHERE salary < 5000000;
このSQLを実行すると、給与が500万円未満の社員が取得されます。
| id | name | age | department | salary |
|---|---|---|---|---|
| 2 | 佐藤 花子 | 25 | マーケティング | 4200000 |
このように、比較演算子を使うことで、データの条件検索が可能になります。
4. 論理演算子(AND, OR, NOT)の使い方
SQLの論理演算子を使うと、複数の条件を組み合わせた検索が可能になります。
1. AND演算子
ANDを使うと、すべての条件を満たすデータだけを取得できます。
SELECT * FROM employee
WHERE department = '開発' AND age >= 30;
このSQLを実行すると、開発部で30歳以上の社員のみが取得されます。
| id | name | age | department | salary |
|---|---|---|---|---|
| 3 | 鈴木 一郎 | 35 | 開発 | 6000000 |
2. OR演算子
ORを使うと、どちらかの条件を満たせばデータが取得されます。
SELECT * FROM employee
WHERE department = '開発' OR salary >= 5000000;
このSQLを実行すると、開発部に所属する社員または給与が500万円以上の社員が取得されます。
3. NOT演算子
NOTを使うと、指定した条件に一致しないデータを取得できます。
SELECT * FROM employee
WHERE NOT department = '営業';
このSQLを実行すると、営業部以外の社員が取得されます。
5. 範囲指定の演算子(BETWEEN, IN)の活用方法
SQLでは、BETWEENやINを使うと、より効率的な検索が可能になります。
1. BETWEEN演算子
BETWEENを使うと、指定した範囲内のデータを取得できます。
SELECT * FROM employee
WHERE age BETWEEN 25 AND 35;
このSQLを実行すると、25歳から35歳までの社員が取得されます。
2. IN演算子
INを使うと、複数の値の中から一致するデータを取得できます。
SELECT * FROM employee
WHERE department IN ('営業', '開発');
このSQLを実行すると、営業部と開発部の社員が取得されます。
6. 文字列検索のLIKE演算子とは?
部分一致検索を行う場合は、LIKE演算子を使用します。
1. 名前が「田中」で始まる社員を検索
SELECT * FROM employee
WHERE name LIKE '田中%';
このSQLを実行すると、「田中」で始まる名前の社員が取得されます。
2. 末尾が「郎」の社員を検索
SELECT * FROM employee
WHERE name LIKE '%郎';
このSQLを実行すると、名前が「郎」で終わる社員が取得されます。
3. 部分一致検索
名前の中に「一」が含まれる社員を検索するには、%を前後につけます。
SELECT * FROM employee
WHERE name LIKE '%一%';
このSQLを実行すると、名前のどこかに「一」が含まれる社員が取得されます。
このように、LIKE演算子を使うと、柔軟な文字列検索が可能になります。
7. NULLを扱う演算子(IS NULL, IS NOT NULL)
データベースでは、値が存在しない場合にNULLが格納されます。通常の比較演算子(=, != など)ではNULLを比較できないため、IS NULLやIS NOT NULLを使用します。
1. NULLのデータを取得(IS NULL)
IS NULLを使うと、値がNULLのデータを取得できます。
SELECT * FROM employee WHERE salary IS NULL;
このSQLを実行すると、給与情報が登録されていない(NULL)社員のみが取得されます。
2. NULLではないデータを取得(IS NOT NULL)
IS NOT NULLを使うと、NULLではないデータを取得できます。
SELECT * FROM employee WHERE salary IS NOT NULL;
このSQLを実行すると、給与が登録されている社員が取得されます。
3. NULLを回避する方法(COALESCE関数)
NULLを0に置き換えたい場合は、COALESCE関数を使用します。
SELECT name, COALESCE(salary, 0) AS salary FROM employee;
これにより、NULLの給与データが0として扱われます。
8. 計算や文字列操作に使う演算子(+ , -, ||, CONCAT)
SQLでは、数値の計算や文字列の結合が可能です。
1. 数値の計算(+ , - , * , /)
数値の演算には、四則演算の演算子(+, -, *, /)を使用します。
SELECT name, salary, salary * 1.1 AS increased_salary FROM employee;
このSQLは、給与を10%増加させた計算結果を取得します。
2. 文字列の結合(|| または CONCAT関数)
文字列を結合する場合、データベースによって方法が異なります。
PostgreSQL・Oracle(||演算子)
SELECT name || '(' || department || ')' AS employee_info FROM employee;
このSQLは、名前と部署を結合して表示します。
MySQL・SQL Server(CONCAT関数)
SELECT CONCAT(name, '(', department, ')') AS employee_info FROM employee;
これにより、文字列が結合された状態で取得できます。
9. 実践!SQL演算子を組み合わせてデータを検索する
ここまで学んだ演算子を組み合わせることで、より柔軟な検索が可能になります。
1. 給与が500万円以上で、30歳以上の社員を検索
SELECT * FROM employee
WHERE salary >= 5000000 AND age >= 30;
2. 開発または営業の社員で、給与が400万円以上の人を検索
SELECT * FROM employee
WHERE department IN ('開発', '営業') AND salary >= 4000000;
3. 「田中」で始まる社員の給与を10%増やして表示
SELECT name, salary, salary * 1.1 AS new_salary
FROM employee
WHERE name LIKE '田中%';
このように、SQLの演算子を組み合わせることで、さまざまな条件でデータを検索・操作することができます。