SQL WHERE 句
1. SQL WHERE 句とは
WHERE 句は、レコードをフィルタリング(絞り込み)するために使用されます。
特定の条件を満たすレコードのみを抽出したい場合に、この WHERE 句を活用します。
1.1 実行例
ここでは、国(Country)が「Mexico」であるすべての顧客を選択します。
/* 国が Mexico の顧客をすべて選択 */
SELECT * FROM Customers
WHERE Country = 'Mexico';2. WHERE の構文
SELECT column1, column2, ...
FROM table_name
WHERE condition;WHERE句はSELECTステートメントだけでなく、UPDATEやDELETEなどでも頻繁に使用されます。
3. デモ用データベース
以下は、本ガイドの例題で使用する Customers テーブルの抜粋です。
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
4. テキストフィールド vs 数値フィールド
SQL では、テキスト値(文字列)を扱う際、値をシングルクォート(')で囲む必要があります(ほとんどのデータベースシステムではダブルクォートも許容されます)。
一方で、数値フィールド(Numeric fields)を扱う場合は、引用符で囲んではいけません。
4.1 実行例(数値指定)
/* CustomerID が 1 のレコードを選択(数値なのでクォート不要) */
SELECT * FROM Customers
WHERE CustomerID = 1;5. WHERE 句で使用できる演算子
= 演算子以外にも、検索をフィルタリングするためにさまざまな演算子(Operator)を使用できます。
5.1 実行例(比較演算)
CustomerID が 80 より大きいすべての顧客を選択する:
/* CustomerID が 80 を超えるレコードをすべて選択 */
SELECT * FROM Customers
WHERE CustomerID > 80;5.2 主要な演算子一覧
WHERE 句では以下の演算子が利用可能です。
| 演算子 | 説明 |
|---|---|
= | 等しい(Equal) |
> | より大きい(Greater than) |
< | より小さい(Less than) |
>= | 以上(Greater than or equal) |
<= | 以下(Less than or equal) |
<> | 等しくない(Not equal)。※一部の SQL バージョンでは != と記述される場合もあります |
BETWEEN | 特定の範囲内(Between a certain range) |
LIKE | パターンマッチング検索(Search for a pattern) |
IN | カラムに対して複数の候補値を指定する(Specify multiple possible values) |