English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL WHERE 子句

このチュートリアルでは、SQLを使用してテーブルから特定のレコードを選択する方法を学びます。

条件に基づくレコードの選択

前章で、テーブルやテーブルの列からすべてのレコードを取得する方法を学びました。しかし、現実の世界では、通常、特定の年齢層や国など、ある特定の条件を満たすレコードを選択、更新、または削除する必要があります。/のユーザーなどと一緒に使用されます。

WHERE子句はSELECTUPDATEおよびDELETEです。しかし、次の章でこの子句を他の文と一緒に使用する方法を見てみます。

構文

WHERE子句はSELECT文と一緒に使用され、指定された条件を満たすレコードのみを抽出します。基本的な構文は以下のように示されます:

SELECT column_list FROM table_name WHERE condition;

ここでは、column_listは、値を取得したいデータベースのテーブルの列です/のフィールド名称、例えばnameagecountryなどがあります。しかし、テーブルのすべての利用可能な列の値を取得するには、以下の構文を使用できます:

SELECT * FROM table_name WHERE condition;

今、実際の動作原理を示すいくつかの例を見てみましょう。

データベースに「employeesの表に以下のような記録が含まれています:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

WHERE子句を使用してレコードをフィルタリングします

以下のSQL文は、employeesの表から、給料が7000のすべてのemployeeです。WHERE子句は、必要でないデータをフィルタリングします。

SELECT * FROM employees
WHERE salary > 7000;

実行後、出力は以下のようになります:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

ご覧の通り、出力は給料が7000の従業員です。同様に、特定の列からレコードを取得することができます:

SELECT emp_id, emp_name, hire_date, salary
FROM employees
WHERE salary > 7000;

上記の文を実行すると、以下のような出力が得られます:

+--------+--------------+------------+--------+
| emp_id | emp_name     | hire_date  | salary |
+--------+--------------+------------+--------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |
+--------+--------------+------------+--------+

以下の文は、その従業員IDが2の従業員のレコードです。

SELECT * FROM employees
WHERE emp_id = 2;

この文は以下のような出力を生成します:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+

この度、出力では一行のみを得ますが、emp_id各従業員に固有です。

WHERE子句で許可されている演算子

SQLはWHERE子句で使用できる多くの演算子をサポートしており、以下のテーブルでは最も重要な演算子をまとめています。

操作者説明オンラインサンプル
=等于WHERE id = 2
>比...更棒WHERE age > 30
<少于WHERE age < 18
>=大于或等于WHERE rating >= 4
<=小于或等于WHERE price <= 100
LIKEシンプルなパターンマッチングWHERE name LIKE 'Dav'
IN指定された値がリストまたはサブクエリのいずれかと一致するか確認WHERE country IN ('USA', 'UK')
BETWEEN指定された値が範囲内にあるか確認WHERE rating BETWEEN 3 AND 5