【初心者向け】SQLのWHERE句を使った検索条件の指定方法を解説!

データベースから必要な情報を取り出すときに欠かせないのが「WHERE句」です。
条件を指定して絞り込みができるため、知りたいデータだけを効率よく検索できます。
しかし「SELECT文とどう組み合わせるのか」「演算子の違いがよくわからない」などと、理解に苦しむ初心者も多いのも事実です。
この記事では基本的な使い方から応用的な活用例までわかりやすく解説します。
SQLにおけるWHERE句とは?

SQLにおけるWHERE句とは、データベースから取得するレコードに条件を付けるための構文です。
指定した条件を満たす行だけを抽出できるため、大量のデータから必要な情報を効率よく取り出せます。
使用例としては、社員テーブルから「20歳以上の社員」や「営業部に所属する社員」など、特定の条件に合致するデータだけを取得する場合に利用されます。
そもそものSQLの概要をもっと理解したい方は、以下の記事も参考にしてみてください。
SELECT構文との組み合わせ方
WHERE句は通常、SELECT構文とセットで利用します。
基本的な形は以下のとおりです。
SELECT 列名 FROM テーブル名 WHERE 条件;
例えば
SELECT * FROM users WHERE age >= 20;
と書くと、usersテーブルから20歳以上のレコードだけを取得できます。
WHERE句を指定しなければ、テーブル内のすべてのデータが返されるため、必要な情報を抽出するときは必ずWHERE句を組み合わせて使うのが一般的です。
SQLでのWHERE句を使った条件検索方法

WHERE句は、条件を指定して必要なデータだけを取り出すために欠かせない構文です。
演算子を使うことで「等しい」「大きい」「含まれている」など、さまざまな条件でデータを絞り込むことができます。
ここでは基本的な演算子の使い方や具体的な検索方法を解説し、実際のSQL文とその実行結果を紹介します。
WHERE句の基本的な演算子
WHERE句では、以下の演算子を使って条件を指定します。
演算子 | 意味 | 使用例 |
= | 等しい | age = 30(年齢が30のデータ) |
<> または != | 等しくない | age <> 30(年齢が30でないデータ) |
> | より大きい | age > 20(20歳より大きいデータ) |
< | より小さい | age < 20(20歳未満のデータ) |
>= | 以上 | age >= 20(20歳以上のデータ) |
<= | 以下 | age <= 20(20歳以下のデータ) |
これらの組み合わせで、柔軟な条件検索を実現しています。
条件検索方法
例えば「年齢が20歳以上のユーザー」を取得するSQL文は以下の通りです。
SELECT name, age
FROM users
WHERE age >= 20;
上記を実行すると、次のようになります。
name | age |
田中 | 25 |
佐藤 | 30 |
鈴木 | 22 |
WHERE句はこのように、大量のデータから必要な行だけを抽出するのに活用されています。
WHERE句の応用的な演算子
WHERE句では「=」「>」などの基本的な演算子に加えて、複数条件を組み合わせたり、範囲や部分一致を指定したりできる応用的な演算子があります。
代表的なものには 以下のような
- AND
- OR
- BETWEEN
- IN
- LIKE
- IS NULL
などがあり、使いこなせればより柔軟な検索が可能になります。
演算子 | 役割 | 使用例 |
AND | 複数条件をすべて満たす行を抽出 | age >= 20 AND dept = ‘営業’ |
OR | 複数条件のいずれかを満たす行を抽出 | age < 20 OR dept = ‘開発’ |
BETWEEN | 指定した範囲内の値を抽出 | age BETWEEN 20 AND 30 |
IN | 複数の候補値のいずれかを満たす行を抽出 | dept IN (‘営業’,’開発’) |
LIKE | 部分一致検索に利用 | name LIKE ‘田%’ |
IS NULL / IS NOT NULL | NULL値の有無を判定 | tel IS NULL |
ここからは、それぞれの使い方を順に紹介していきます。
AND演算子の使い方
AND演算子は「複数の条件をすべて満たす行」を抽出するときに使います。
条件が増えるほど結果は絞り込まれ、より厳密な検索が可能です。
たとえば、「20歳以上かつ営業部のユーザー」を取得したい場合、以下のような書き方をします。
SELECT name, age, dept
FROM users
WHERE age >= 20 AND dept = '営業';
実行結果は以下です。
name | age |
田中 | 25 |
佐藤 | 30 |
鈴木 | 22 |
OR演算子の使い方
OR演算子は「複数の条件のうち、どれか1つでも満たす行」を抽出します。
こちらも条件が増えるほど結果が広がり、柔軟にデータを取得できます。
たとえば、「20歳未満または開発部のユーザー」を取得する場合の書き方は以下です。
SELECT name, age, dept
FROM users
WHERE age < 20 OR dept = '開発';
以下が実行結果です。
name | age | dept |
鈴木 | 18 | 学生 |
山本 | 28 | 開発 |
中村 | 22 | 開発 |
BETWEEN演算子の使い方
BETWEEN演算子は「指定した範囲内にある値」を抽出します。
数値や日付の範囲検索に便利で、「以上・以下」の条件を一度に指定できるのが特徴です。
「20歳から30歳のユーザー」を取得する場合は、以下のような書き方になります。
SELECT name, age
FROM users
WHERE age BETWEEN 20 AND 30;
実行結果は次のとおりです。
name | age |
田中 | 25 |
佐藤 | 30 |
鈴木 | 22 |
IN演算子の使い方
IN演算子は「複数の候補の中から一致する値を持つ行」を抽出するために使います。
前述した「OR」を繰り返すよりもシンプルに書けるのが特徴です。
例えば、「営業部または開発部に所属するユーザー」を取得する際は以下のように書きます。
SELECT name, dept
FROM users
WHERE dept IN ('営業', '開発');
結果は次のようになります。
name | dept |
田中 | 営業 |
佐藤 | 営業 |
山本 | 開発 |
中村 | 開発 |
LIKE演算子の使い方
LIKE演算子は「文字列の部分一致検索」を行うために使用します。
ワイルドカード「%」(任意の文字列)や 「_」(任意の1文字)と組み合わせて使うのが特徴です。
以下は、「田」で始まる名前のユーザーを取得する書き方です。
SELECT name, age
FROM users
WHERE name LIKE '田%';
実行結果は以下です。
name | age |
田中 | 25 |
田村 | 29 |
IS NULL / IS NOT NULLの使い方
IS NULLは「値がNULLの行」を、IS NOT NULLは「値がNULLでない行」を抽出します。
数値や文字列ではなく「値が存在しないこと」を判定するときに使います。
以下は、電話番号が未登録(NULL)のユーザーを取得する際の書き方です。
SELECT name, tel
FROM users
WHERE tel IS NULL;
結果は以下のようになります。
name | tel |
鈴木 | NULL |
山本 | NULL |
ここまで、基本的な演算子の使い方を紹介してきましたが、実務の場面になると「知識はあるけれど実際に使えない」という壁にぶつかりやすいです。
SQLを含むWeb開発スキルをしっかり身につけたい方には、DMM WEBCAMPの Webアプリケーションコースがおすすめです。
本スクールではRuby/Ruby on Railsを中心に学び、Herokuでオリジナルアプリを公開できるまでサポートしてもらえます。
現役エンジニア講師のメンタリングや無制限の課題レビューで、知識を「使える力」に変えられるのが大きな魅力です。
週2回のメンタリングやいつでも活用できる質問サポートもあり、短期間で着実にスキルを身につけられる体制が整っているので、ぜひご検討ください!
>>DMM WEBCAMP Webアプリケーションコースの詳細はこちら
SQLのWHERE句に関するよくある質問

最後に、SQLのWHERE句に関するよくある質問に回答します。
Q.SQLのWHERE句とは?
WHERE句とは、SQLで特定の条件に合う行だけを抽出するための構文です。
指定した条件を満たすデータのみを返すことで、大量の情報から必要な部分だけを効率的に取り出せます。
Q.SQLのHAVINGとWHEREの違いは?
WHEREはテーブルの行データに対して条件を指定します。
一方HAVINGは、GROUP BYで集計した結果に対して条件を指定するときに使います。
つまり、行への条件はWHERE、集計後の条件はHAVINGです。
WHERE | HAVING | |
適用対象 | 行データ | 集計後のデータ |
主な用途 | テーブルから条件に合う行を抽出 | GROUP BYで集計した結果を絞り込み |
使用例 | WHERE age > 20 (20歳以上の行を抽出) | HAVING COUNT(*) > 5 (件数が5件を超えるグループを抽出) |
処理順序 | JOIN後すぐに適用 | GROUP BY → 集計後に適用 |
Q.WHEREとJOINはどちらが先?
SQLの処理順序では、JOINでテーブルを結合した後にWHERE句で条件が適用されます。
つまり「テーブルを結合してから、条件で絞り込む」という流れになるため、結合と条件指定を混同しないことが重要です。
まとめ
SQLのWHERE句は、必要なデータを条件で絞り込む際に欠かせない基本構文。
演算子を組み合わせれば、単純な検索から複雑な抽出まで柔軟に対応できます。
HAVINGやJOINとの違いを理解して使い分ければ、実務でのデータ分析やシステム開発でも大いに役立つので、初心者のうちに基礎を固めて使いこなせるようになることが大切です。
とはいえ、独学だけでは「知識はあるが実務で使えない」という壁にぶつかりがちです。
DMM WEBCAMPのWebアプリケーションコースなら、Ruby/Railsを中心にSQLを含む開発スキルを実践的に学び、オリジナルアプリ公開まで到達できます。
現役エンジニア講師の手厚いサポートと、教育訓練給付金による最大80%還元制度で、学習負担も大幅に軽減できるので、ぜひこの機会に活用し、スムーズにSQLを習得しましょう!