【初心者向け】SQLのWHERE句を徹底解説

1. WHERE句とは?

SQLのWHERE句は、データベースから特定の条件に合致するデータだけを抽出するために使用されます。 例えば、「30歳以上の顧客を取得したい」「特定の都市に住んでいる人の情報を取得したい」といった場合にWHERE句を使います。

2. WHERE句の基本構文

WHERE句の基本的な書き方は以下の通りです。

SELECT 列名1, 列名2 FROM テーブル名 WHERE 条件;

まずは以下のようなテーブルがあるとします。

id name age city
1 田中 30 東京
2 鈴木 25 大阪
3 佐藤 40 名古屋
4 山本 22 福岡

例えば、customers テーブルから年齢が30歳以上のデータを取得するSQL文は次のようになります。

SELECT name, age FROM customers WHERE age >= 30;

このSQLを実行すると、次のような結果が得られます。

name age
田中 30
佐藤 40

3. WHERE句のさまざまな条件指定

3.1 比較演算子

WHERE句では、次のような比較演算子を使って条件を指定できます。

演算子 説明
= 等しい age = 25
!= または <> 等しくない city != '東京'
> より大きい age > 30
>= 以上 age >= 30
< より小さい age < 40
<= 以下 age <= 40

3.2 AND・OR・NOT を使った条件の組み合わせ

複数の条件を組み合わせる場合、ANDOR を使います。

  • AND:両方の条件を満たすデータを取得
  • OR:どちらかの条件を満たすデータを取得
  • NOT:指定した条件を満たさないデータを取得

4. WHERE句の応用

4.1 BETWEENを使った範囲指定

SELECT name, age FROM customers WHERE age BETWEEN 25 AND 35;

このSQLを実行すると、次のような結果が得られます。

name age
田中 30
鈴木 25

4.2 INを使った複数値の指定

SELECT name, city FROM customers WHERE city IN ('東京', '大阪');

このSQLを実行すると、次のような結果が得られます。

name city
田中 東京
鈴木 大阪

4.3 LIKEを使ったあいまい検索

SELECT name FROM customers WHERE name LIKE '田%';

このSQLを実行すると、次のような結果が得られます。

name
田中

5. WHERE句の注意点

(1) 文字列はシングルクォートで囲む

例えば、以下のSQLは正しく動作しません。

SELECT name FROM customers WHERE city = 東京;  -- エラー

正しくは、シングルクォート ' で囲む必要があります。

SELECT name FROM customers WHERE city = '東京';

(2) NULLの比較にはIS NULLを使う

テーブルの中には、データが入っていない(カラの)状態になっている箇所があることがあります。これをNULL(ヌル)と呼びます。

例えば、NULL 値を比較する場合、= を使うと正しく判定できません。

SELECT name FROM customers WHERE email = NULL;  -- エラー

正しくは、IS NULL を使います。

SELECT name FROM customers WHERE email IS NULL;

(3) 数値の比較でクォートを使わない

以下のSQLはエラーになります。

SELECT name FROM customers WHERE age = '30';  -- エラー

数値はクォートせずに記述しましょう。

SELECT name FROM customers WHERE age = 30;

一方で、文字列はクォートを使う必要があります。

SELECT name FROM customers WHERE city = '東京';  -- 正しい

6. まとめ

  • WHERE句を使うと特定の条件に合致するデータだけを取得できる。
  • =, !=, >, <, BETWEEN, IN, LIKE などの条件指定が可能。
  • AND, OR, NOT を組み合わせて複雑な条件を指定できる。
  • 文字列はシングルクォートで囲む必要がある。
  • NULL の比較には IS NULL を使う。
  • 数値はクォートせずに記述する。

WHERE句をマスターして、効率的にデータを抽出しましょう!