データベースに保存された大量のデータから必要な情報を抽出するには、「WHERE句」を使用することが基本です。SQL(Structured Query Language)のWHERE句は、条件を指定してデータをフィルタリングするための強力な手段であり、初心者がデータ分析やデータベース操作を学ぶ上で欠かせない要素です。
この記事では、SQLのWHERE句を使ったデータフィルタリングの基礎から応用テクニックまでを、初心者にもわかりやすく解説します。これをマスターすれば、データベースから必要な情報を効率的に取得できるようになるでしょう。
WHERE句とは?
WHERE句は、SQLのSELECT
文やUPDATE
文、DELETE
文で使用され、指定した条件に一致するデータのみを取得、更新、または削除するために使われます。
WHERE句の基本構文
SELECT 列名
FROM テーブル名
WHERE 条件;
- SELECT:取得したい列を指定します。
- FROM:対象となるテーブルを指定します。
- WHERE:データを絞り込む条件を指定します。
簡単な例
例えば、以下の「employees」というテーブルがあるとします。
id | name | department | salary |
---|---|---|---|
1 | Alice | HR | 5000 |
2 | Bob | IT | 6000 |
3 | Charlie | IT | 5500 |
4 | Diana | Marketing | 4500 |
この中から「IT部門の社員」を取得したい場合、以下のようなSQL文を使用します。
SELECT *
FROM employees
WHERE department = 'IT';
結果:
id | name | department | salary |
---|---|---|---|
2 | Bob | IT | 6000 |
3 | Charlie | IT | 5500 |
WHERE句の基本的な比較演算子
WHERE句では、条件を指定する際に以下のような比較演算子を使用します。
演算子 | 説明 | 例 |
---|---|---|
= | 等しい | salary = 5000 |
<> | 等しくない | department <> 'HR' |
< | より小さい | salary < 5000 |
> | より大きい | salary > 5000 |
<= | 以下 | salary <= 5000 |
>= | 以上 | salary >= 5000 |
例:5000以上の給与を得ている社員を取得する
SELECT *
FROM employees
WHERE salary >= 5000;
結果:
id | name | department | salary |
---|---|---|---|
1 | Alice | HR | 5000 |
2 | Bob | IT | 6000 |
3 | Charlie | IT | 5500 |
複数条件の指定:ANDとOR
複数の条件を指定する場合、AND
やOR
を使って条件を組み合わせます。
AND:すべての条件を満たすデータを取得
SELECT *
FROM employees
WHERE department = 'IT' AND salary > 5500;
結果:
id | name | department | salary |
---|---|---|---|
2 | Bob | IT | 6000 |
OR:いずれかの条件を満たすデータを取得
SELECT *
FROM employees
WHERE department = 'IT' OR salary > 5500;
結果:
id | name | department | salary |
---|---|---|---|
1 | Alice | HR | 5000 |
2 | Bob | IT | 6000 |
3 | Charlie | IT | 5500 |
ANDとORを組み合わせる
複雑な条件を指定する際は、カッコ()
を使って条件をグループ化します。
SELECT *
FROM employees
WHERE (department = 'IT' OR department = 'HR') AND salary > 5000;
結果:
id | name | department | salary |
---|---|---|---|
2 | Bob | IT | 6000 |
3 | Charlie | IT | 5500 |
特定の値を指定:IN演算子
IN
を使うと、複数の値のいずれかに一致するデータを簡単に取得できます。
SELECT *
FROM employees
WHERE department IN ('IT', 'HR');
結果:
id | name | department | salary |
---|---|---|---|
1 | Alice | HR | 5000 |
2 | Bob | IT | 6000 |
3 | Charlie | IT | 5500 |
部分一致を検索:LIKE演算子
LIKE
を使用すると、文字列の部分一致を検索できます。ワイルドカードを使うことで柔軟な検索が可能です。
ワイルドカード | 説明 | 例 |
---|---|---|
% | 任意の文字列 | 'A%' (Aで始まる) |
_ | 任意の1文字 | 'A_' (Aで始まり2文字目指定) |
例:名前がAで始まる社員を取得
SELECT *
FROM employees
WHERE name LIKE 'A%';
結果:
id | name | department | salary |
---|---|---|---|
1 | Alice | HR | 5000 |
範囲を指定:BETWEEN演算子
BETWEEN
を使うと、数値や日付の範囲を指定してデータを絞り込むことができます。
例:給与が5000から6000の範囲にある社員を取得
SELECT *
FROM employees
WHERE salary BETWEEN 5000 AND 6000;
結果:
id | name | department | salary |
---|---|---|---|
1 | Alice | HR | 5000 |
2 | Bob | IT | 6000 |
3 | Charlie | IT | 5500 |
NULL値の確認:IS NULLとIS NOT NULL
IS NULL
やIS NOT NULL
を使うと、データが空(NULL)であるかどうかを確認できます。
例:給与が未設定の社員を取得
SELECT *
FROM employees
WHERE salary IS NULL;
WHERE句の応用例
1. データの重複を排除する
DISTINCT
と組み合わせて、特定の列で重複を排除します。
SELECT DISTINCT department
FROM employees;
2. 条件に基づいて並び替える
ORDER BY
と組み合わせて、フィルタリング後のデータをソートします。
SELECT *
FROM employees
WHERE salary > 5000
ORDER BY salary DESC;
まとめ
SQLのWHERE句は、データを効率的にフィルタリングするための基本でありながら非常に強力なツールです。比較演算子や論理演算子、部分一致検索、範囲指定など、多彩な機能を使いこなすことで、必要なデータを簡単に抽出できます。
WHERE句をマスターすることで、データ分析やアプリケーション開発でのデータ操作がよりスムーズになるでしょう。初心者の方は、まず基本的な比較演算子やAND
・OR
の使い方を学び、徐々に応用例に挑戦してみてください!