SQL Serverは、データベースを操作するための強力なツールですが、特にWHERE句はデータの抽出に欠かせません。
本記事では、SQL ServerのWHERE句について、基本的な使い方から応用的な活用方法までを解説します。また、学んだ内容をもとに演習問題を用意しているので、理解度を深めましょう。
WHERE句とは?
SQL ServerのWHERE句は、指定した条件に一致するデータだけを抽出するための句です。
SELECT文、UPDATE文、DELETE文で利用されます。たとえば、社員テーブルから特定の社員を検索する場合や、不要なデータを削除する場合に活用されます。
基本構文
SELECT カラム名1, カラム名2, ...
FROM テーブル名
WHERE 条件;
- カラム名:取得したいデータの列を指定します。
- テーブル名:対象となるテーブル名を指定します。
- 条件:抽出したいデータの条件を記述します。
WHERE句の基本的な使い方
比較演算子の使用
条件には、以下のような比較演算子を使うことができます。
演算子 | 説明 | 例 |
---|---|---|
= | 等しい | WHERE age = 30 |
<> | 等しくない | WHERE salary <> 50000 |
> | より大きい | WHERE age > 25 |
< | より小さい | WHERE salary < 60000 |
>= | 以上 | WHERE age >= 18 |
<= | 以下 | WHERE salary <= 40000 |
例:年齢が30歳の社員を検索する
SELECT name, age
FROM employees
WHERE age = 30;
論理演算子の使用
複数の条件を組み合わせるには、ANDやORなどの論理演算子を使用します。
AND演算子の例
SELECT name, department
FROM employees
WHERE age > 25 AND department = 'Sales';
25歳以上でかつ営業部の社員を抽出します。
OR演算子の例
SELECT name, age
FROM employees
WHERE age = 30 OR age = 35;
30歳または35歳の社員を取得します。
よく使われるWHERE句の応用例
BETWEEN句による範囲指定
SELECT name, salary
FROM employees
WHERE salary BETWEEN 30000 AND 50000;
給与が30,000~50,000の社員を取得します。
IN句で複数の値を指定
SELECT name, department
FROM employees
WHERE department IN ('Sales', 'HR', 'IT');
営業、HR、IT部門の社員を取得します。
LIKE句で部分一致検索
SELECT name
FROM employees
WHERE name LIKE 'A%';
名前が「A」で始まる社員を抽出します。
IS NULLによるNULL値の検索
SELECT name, email
FROM employees
WHERE email IS NULL;
メールアドレスが未登録の社員を取得します。
WHERE句を使ったUPDATEとDELETE
UPDATE文の使用例
UPDATE employees
SET salary = salary * 1.1
WHERE department = 'Sales';
営業部の社員の給与を10%アップします。
DELETE文の使用例
DELETE FROM employees
WHERE age < 20;
20歳未満の社員を削除します。
演習問題
ここまで学んだ内容をもとに、演習問題に挑戦してみましょう。
演習問題1
社員テーブルemployeesから「営業部(Sales)」の社員で、給与が40,000以上の社員の名前と給与を取得するSQL文を書いてください。
期待される結果
name | salary |
---|---|
John Doe | 45000 |
Jane Smith | 50000 |
演習問題2
以下のSQL文で誤っている箇所を修正してください。
SELECT name, department
FROM employees
WHERE age = 30 AND department = 'IT' OR department = 'HR';
期待される動作
- 年齢が30歳で、IT部門またはHR部門に所属する社員を取得する。
演習問題3
社員テーブルemployeesから、「名前が’M’で始まる社員」のリストを取得してください。
期待される結果
name |
---|
Michael |
Mary |
演習問題の解答例
解答例1
SELECT name, salary
FROM employees
WHERE department = 'Sales' AND salary >= 40000;
解答例2
SELECT name, department
FROM employees
WHERE age = 30 AND (department = 'IT' OR department = 'HR');
論理演算子の優先順位を正しくするために、OR
部分をカッコで囲む必要があります。
解答例3
SELECT name
FROM employees
WHERE name LIKE 'M%';
まとめ
SQL ServerのWHERE句は、条件に応じてデータを抽出する強力なツールです。
本記事では、基本的な使い方から応用的な利用法、そして演習問題を通して理解を深めました。
SQLを効果的に使うためには、ANDやORの優先順位、NULL値の扱いに注意する必要があります。