MySQL 速習チュートリアル

MySQL WHERE句

1. MySQL WHERE句の役割

WHERE句は、レコードフィルタリング(絞り込み)するために使用されます。
特定の条件を満たすレコードのみを抽出したい場合に、このWHERE句を指定します。

1.1 WHERE句の構文

SELECT column1, column2, ...
FROM table_name
WHERE condition;

注意点: WHERE句は SELECT ステートメントだけでなく、UPDATEDELETE などでも同様に使用されます。

2. デモ用データベース

本チュートリアルでは、Northwind サンプルデータベースを使用します。
以下は、「Customers」テーブルから抜粋したデータです。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

以下は、「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')