SQL WHERE

概要: このチュートリアルでは、指定された条件に基づいて行をフィルタリングするために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句を使用してテーブルからデータを選択する方法を説明します。

employees_table

数値比較を使用したSQL WHERE句の例

次のクエリは、給与が14,000を超える従業員を検索し、給与に基づいて降順に結果セットを並べ替えます

SELECT
	employee_id,
	first_name,
	last_name,
	salary
FROM
	employees
WHERE
	salary > 14000
ORDER BY
	salary DESC;

試してみる

SQL WHERE numeric example

次のクエリは、部門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)

試してみる

SQL WHERE characters comparison

ただし、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)

試してみる

SQL WHERE date example

1999年に入社した従業員を検索する場合は、いくつかの方法があります。

  1. YEAR関数を使用して、hire_date列から年データを取得し、等しい(=)演算子を使用して式を形成します。
  2. AND演算子を使用して2つの式を使用します。
  3. BETWEEN演算子を使用します。

次のステートメントは、最初の方法を示しています。

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 date equals

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

このチュートリアルは役立ちましたか?