概要: このチュートリアルでは、指定された条件に基づいて行をフィルタリングするために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 > 1000Code language: SQL (Structured Query Language) (sql)これは、「給与は1000より大きいか?」という質問をします。
または、次のように、演算子の両側に列名を使用できます。
min_salary < max_salaryCode 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句を使用する方法を示しました。