MySQL WHERE句
1. MySQL WHERE句の役割
WHERE句は、レコードをフィルタリング(絞り込み)するために使用されます。
特定の条件を満たすレコードのみを抽出したい場合に、このWHERE句を指定します。
1.1 WHERE句の構文
SELECT column1, column2, ...
FROM table_name
WHERE condition;注意点: WHERE句は SELECT ステートメントだけでなく、UPDATE や DELETE などでも同様に使用されます。
2. デモ用データベース
本チュートリアルでは、Northwind サンプルデータベースを使用します。
以下は、「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 |
以下は、「Mexico」の顧客のみを選択するSQLの例です。
/* 国が'Mexico'である
すべてのカラムを取得する */
SELECT * FROM Customers
WHERE Country = 'Mexico';3. テキストフィールド vs 数値フィールド
SQLでは、テキスト値(文字列)を扱う場合、値をシングルクォーテーション(')で囲む必要があります(多くのデータベースシステムではダブルクォーテーションも許可されます)。
一方で、数値フィールド(Numeric Fields)を扱う場合は、クォーテーションで囲んではいけません。
/* CustomerIDは数値なので
クォーテーションは不要 */
SELECT * FROM Customers
WHERE CustomerID = 1;4. WHERE句で使用できる演算子
WHERE句では、= 演算子(Operator)以外にも、さまざまな演算子を使用して検索条件を指定できます。
以下の例は、CustomerIDが80より大きいすべての顧客を選択します。
/* 比較演算子 > を使用して
IDが80を超えるレコードを抽出 */
SELECT * FROM Customers
WHERE CustomerID > 80;4.1 主要な演算子一覧
WHERE句で使用できる主な演算子は以下の通りです。
| 演算子 | 説明 | 例 |
|---|---|---|
= | 等しい | WHERE Country = 'Japan' |
> | より大きい | WHERE Age > 20 |
< | より小さい | WHERE Age < 65 |
>= | 以上 | WHERE Score >= 80 |
<= | 以下 | WHERE Price <= 1000 |
<> | 等しくない(注:SQLのバージョンによっては != と記述可能) | WHERE Country <> 'USA' |
BETWEEN | 特定の範囲内 | WHERE Price BETWEEN 10 AND 20 |
LIKE | パターン検索 | WHERE Name LIKE 'S%' |
IN | カラムに複数の可能性のある値を指定 | WHERE City IN ('Tokyo', 'Osaka') |