初心者でもわかるSQL ServerのWHERE句の使い方と応用

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;

論理演算子の使用

複数の条件を組み合わせるには、ANDORなどの論理演算子を使用します。

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文を書いてください。

期待される結果

namesalary
John Doe45000
Jane Smith50000

演習問題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値の扱いに注意する必要があります。