概要: このチュートリアルでは、指定された条件に基づいて行をフィルタリングするためにSQLのWHERE
句を使用する方法を学びます。
SQL WHERE句の概要
テーブルから特定の行を選択するには、SELECT
文でWHERE
句を使用します。以下は、SELECT
文におけるWHERE
句の構文を示しています。
SELECT
column1, column2, ...
FROM
table_name
WHERE
condition;
Code language: SQL (Structured Query Language) (sql)
WHERE
句は、FROM
句の直後に現れます。WHERE
句には、テーブル内の各行を評価する1つ以上の論理式が含まれます。条件がtrueと評価される行は結果セットに含まれ、それ以外の場合は除外されます。
SQLには、TRUE、FALSE、およびUNKNOWNの3値論理があることに注意してください。つまり、行が条件をFALSEまたはNULLと評価する場合、その行は返されません。
WHERE
句に続く論理式は、述語としても知られています。WHERE
句で使用される行選択基準を形成するために、さまざまな演算子を使用できます。
次の表に、SQL比較演算子を示します。
演算子 | 意味 |
---|---|
= | 等しい |
<> (!=) | 等しくない |
< | より小さい |
> | より大きい |
<= | 以下 |
>= | 以上 |
単純な式を形成するには、上記の演算子の1つを、片側が列名、もう片側がリテラル値の2つのオペランドとともに使用します。たとえば、
salary > 1000
Code language: SQL (Structured Query Language) (sql)
これは、「給与は1000より大きいか?」という質問をします。
または、次のように、演算子の両側に列名を使用できます。
min_salary < max_salary
Code language: SQL (Structured Query Language) (sql)
この式は、「最低給与は最高給与より小さいか?」という別の質問をします。
式で使用するリテラル値は、使用する形式に応じて、数値、文字、日付、および時間にすることができます。
- 数値: 整数または小数点を含むことができる数値をフォーマットなしで使用します(例:100、200.5)。
- 文字: 一重引用符または二重引用符で囲まれた文字を使用します(例:「100」、「John Doe」)。
- 日付: データベースが保存する形式を使用します。これはデータベースシステムによって異なります。たとえば、MySQLは日付データを格納するために
'yyyy-mm-dd'
形式を使用します。 - 時間: データベースシステムが時間データを格納するために使用する形式を使用します。たとえば、MySQLは時間データを格納するために
'HH:MM:SS'
を使用します。
SELECT
文に加えて、UPDATE
文またはDELETE
文でWHERE
句を使用して、更新または削除する行を指定できます。
SQL WHEREの例
employees
テーブルを使用して、WHERE
句を使用してテーブルからデータを選択する方法を説明します。

数値比較を使用したSQL WHERE句の例
次のクエリは、給与が14,000を超える従業員を検索し、給与に基づいて降順に結果セットを並べ替えます。
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
salary > 14000
ORDER BY
salary DESC;

次のクエリは、部門ID 5で働くすべての従業員を検索します。
SELECT
employee_id,
first_name,
last_name,
department_id
FROM
employees
WHERE
department_id = 5
ORDER BY
first_name;
Code language: SQL (Structured Query Language) (sql)
文字を使用したSQL WHERE句の例
SQLは大文字と小文字を区別しません。ただし、比較の値に関しては、大文字と小文字が区別されます。たとえば、次のクエリは、姓がChen
である従業員を検索します。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
last_name = 'Chen';
Code language: SQL (Structured Query Language) (sql)

ただし、CHEN
またはchen
を使用すると、行は返されません。
日付を使用したSQL WHERE句の例
1999年1月1日
以降に入社したすべての従業員を取得するには、次のクエリを使用します。
SELECT
employee_id,
first_name,
last_name,
hire_date
FROM
employees
WHERE
hire_date >= '1999-01-01'
ORDER BY
hire_date DESC;
Code language: SQL (Structured Query Language) (sql)

1999年に入社した従業員を検索する場合は、いくつかの方法があります。
次のステートメントは、最初の方法を示しています。
SELECT
employee_id,
first_name,
last_name,
hire_date
FROM
employees
WHERE
YEAR (hire_date) = 1999
ORDER BY
hire_date DESC;
Code language: SQL (Structured Query Language) (sql)

このチュートリアルでは、指定された条件に基づいてデータをフィルタリングするために、SQLのWHERE
句を使用する方法を示しました。