English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、SQLを使用してテーブルから特定のレコードを選択する方法を学びます。
前章で、テーブルやテーブルの列からすべてのレコードを取得する方法を学びました。しかし、現実の世界では、通常、特定の年齢層や国など、ある特定の条件を満たすレコードを選択、更新、または削除する必要があります。/のユーザーなどと一緒に使用されます。
WHERE子句はSELECT、UPDATEおよびDELETEです。しかし、次の章でこの子句を他の文と一緒に使用する方法を見てみます。
WHERE子句はSELECT文と一緒に使用され、指定された条件を満たすレコードのみを抽出します。基本的な構文は以下のように示されます:
SELECT column_list FROM table_name WHERE condition;
ここでは、column_listは、値を取得したいデータベースのテーブルの列です/のフィールド名称、例えばname、age、countryなどがあります。しかし、テーブルのすべての利用可能な列の値を取得するには、以下の構文を使用できます:
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 | +--------+--------------+------------+--------+---------+
以下の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各従業員に固有です。
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 |