SQLのWHERE句の使い方を徹底解説|条件指定でデータを絞り込む方法

データベースから条件付きでデータを抽出するSQLのイメージ
SQLのWHERE句を使い、条件を指定してデータを抽出するイメージ。

SQLでデータを扱う際に欠かせないのが WHERE句 です。WHERE句を使うことで、特定の条件に合ったデータだけを抽出することができます。本記事では、WHERE句の基本的な使い方から、よく使う演算子や注意点までをわかりやすく解説します。

WHERE句とは?

WHERE句は、SELECT文やUPDATE文、DELETE文などで 条件を指定するための構文 です。
例えば「年齢が20歳以上のユーザーだけを取得したい」といった場合に活用します。

基本構文は以下の通りです。

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

例:年齢が20歳以上のユーザーを取得

SELECT name, age
FROM users
WHERE age >= 20;

このクエリでは、users テーブルから age が20以上のレコードのみを抽出します。

よく使う比較演算子

WHERE句では、以下のような比較演算子をよく使います。

演算子意味使用例
=等しいWHERE age = 30
!= または <>等しくないWHERE age != 30
>より大きいWHERE age > 20
<より小さいWHERE age < 20
>=以上WHERE age >= 20
<=以下WHERE age <= 20

複数条件を組み合わせる

AND(かつ)

両方の条件を満たすデータを抽出します。

SELECT name, age, city
FROM users
WHERE age >= 20 AND city = 'Tokyo';

👉 20歳以上かつ「Tokyo」に住むユーザーを取得。

OR(または)

どちらかの条件を満たせば抽出します。

SELECT name, age, city
FROM users
WHERE city = 'Tokyo' OR city = 'Osaka';

👉 「Tokyo」または「Osaka」に住むユーザーを取得。

NOT(否定)

条件を満たさないデータを取得します。

SELECT name, age
FROM users
WHERE NOT city = 'Tokyo';

👉 「Tokyo」以外に住むユーザーを取得。

部分一致検索(LIKE)

文字列の部分一致検索には LIKE を使います。

ワイルドカード意味
%任意の文字列(0文字以上)
_任意の1文字
-- 「Y」で始まる名前を取得
SELECT name
FROM users
WHERE name LIKE 'Y%';
-- 3文字目が「n」の名前を取得
SELECT name
FROM users
WHERE name LIKE '__n%';

範囲指定(BETWEEN)

数値や日付の範囲を指定するときは BETWEEN を使うと便利です。

SELECT name, age
FROM users
WHERE age BETWEEN 20 AND 30;

👉 年齢が20以上30以下のユーザーを取得。

値の集合にマッチ(IN)

特定の値の集合に含まれるかどうかを調べたい場合は IN を使います。

SELECT name, city
FROM users
WHERE city IN ('Tokyo', 'Osaka', 'Nagoya');

👉 「Tokyo」「Osaka」「Nagoya」に住むユーザーを取得。

NULL値の扱い(IS NULL / IS NOT NULL)

カラムに値が入っていない場合(NULL)は、=ではなく IS NULL を使います。

SELECT name, email
FROM users
WHERE email IS NULL;

👉 メールアドレスが未登録のユーザーを取得。

まとめ

  • WHERE句 はデータを絞り込むための条件を指定する構文
  • 比較演算子(=, >, <, !=など)で基本的な条件を指定
  • AND / OR / NOT で複数条件を組み合わせ
  • LIKE / BETWEEN / IN / IS NULL で柔軟な条件検索が可能

WHERE句を使いこなすことで、必要なデータを効率的に抽出できるようになります。

関連記事