WHERE句とは?初心者でもわかる条件指定の基本を徹底解説!
生徒
「先生、SQLのSELECT文でデータを取り出すときに、WHERE句(ウェアク)ってよく出てきますけど、これは何をするものなんですか?」
先生
「WHERE句(ウェアク)は、データベース(Database/データベース)の中から“条件に合ったデータだけ”を取り出すための仕組みなんですよ。つまり、データを絞り込むために使います。」
生徒
「絞り込む?つまり全部のデータじゃなくて、特定のものだけを選べるんですね?」
先生
「そうです。たとえば“年齢が30歳以上の社員”とか“価格が1000円より高い商品”だけを表示したいときに使います。今から実際に使い方を見ていきましょう!」
1. WHERE句(ウェアク)とは?
WHERE句は、SQL(エスキューエル/Structured Query Language)の中で、条件を指定して必要なデータだけを取り出すための文法です。データベースの表(テーブル)には大量の情報が保存されていますが、WHERE句を使うことで「条件に一致する行」だけを取得できます。
たとえば、社員の表(テーブル)から「営業部の社員だけ」を取得したい場合、WHERE句を使えば簡単に取り出せます。SELECT文と組み合わせて使うのが基本です。
2. WHERE句の基本構文
WHERE句は、次のように書きます。
SELECT 列名 FROM 表名 WHERE 条件;
この構文の中で「条件」と書かれている部分に、比較したい値を指定します。たとえば、年齢が30歳以上の社員を取得するには次のように書きます。
SELECT name, age FROM employees WHERE age >= 30;
この命令を実行すると、社員テーブル(employees)から年齢(age)が30以上の人だけを取り出します。WHERE句は、条件を設定するためのフィルター(ろ過機)のような役割を持っています。
3. 比較演算子(ヒカクエンザンシ)を使った条件指定
WHERE句では、条件を表すために「比較演算子(ヒカクエンザンシ)」を使います。代表的な演算子を表で見てみましょう。
| 演算子 | 意味 | 例 |
|---|---|---|
| = | 等しい | age = 25 |
| > | より大きい | price > 1000 |
| < | より小さい | age < 20 |
| >= | 以上 | age >= 30 |
| <= | 以下 | price <= 500 |
| <> | 等しくない | department <> '営業' |
このように、WHERE句では条件を自由に設定できます。たとえば「価格が1000円を超える商品」「20歳未満の学生」「部署が営業以外の社員」なども簡単に指定できます。
4. 文字列(モジレツ)の条件指定
WHERE句では数値だけでなく、文字列(モジレツ)でも条件を指定できます。文字列を指定するときは、シングルクォーテーション(' ')で囲みます。
SELECT name FROM employees WHERE department = '営業';
この例では、部署(department)が「営業」の社員だけを取得します。文字列の比較でも「=」や「<>」などの演算子が使えます。
5. AND(アンド)とOR(オア)で条件を組み合わせる
複数の条件を組み合わせたいときは、AND(アンド)やOR(オア)を使います。
- AND:両方の条件を満たすものを取得
- OR:どちらかの条件を満たすものを取得
SELECT name FROM employees WHERE age >= 30 AND department = '営業';
この場合、「30歳以上」かつ「営業部」の社員だけを取得します。ORを使えば、「30歳以上」または「営業部」のどちらかに当てはまる社員が選ばれます。
6. BETWEEN(ビトウィーン)で範囲検索
WHERE句では、BETWEEN(ビトウィーン)を使うことで、特定の範囲に含まれるデータを取得できます。
SELECT name, age FROM employees WHERE age BETWEEN 20 AND 30;
この例では、年齢が20歳以上30歳以下の社員を取得します。BETWEENを使うと範囲指定がわかりやすくなります。
7. LIKE句(ライクク)であいまい検索
文字列の一部を検索したい場合は、LIKE(ライク)を使います。パーセント記号(%)を使うと、部分一致で検索できます。
SELECT name FROM employees WHERE name LIKE '%田%';
この例では、名前に「田」が含まれている社員を探します。たとえば「田中」「山田」「高田」などが該当します。LIKE句は検索機能でよく使われる重要な構文です。
8. IN句(インク)で複数の値を指定
WHERE句では、IN(イン)を使って複数の値をまとめて指定できます。
SELECT name FROM employees WHERE department IN ('営業', '総務', '開発');
このように書くと、「営業」「総務」「開発」のいずれかの部署に所属する社員を取得します。複数の条件をORでつなぐよりも簡潔に書けるのが特徴です。
9. NULL(ヌル)を扱うときの注意
データベースの中には「値が存在しない」状態を表すNULL(ヌル)という特殊な値があります。NULLを比較するときは=ではなくIS NULLやIS NOT NULLを使います。
SELECT name FROM employees WHERE address IS NULL;
この文は、住所(address)が登録されていない社員を探します。NULLは「空文字」や「0」とは違うので、注意が必要です。
10. WHERE句の登場と歴史
WHERE句は、1970年代に登場したリレーショナルデータベース(RDB/アールディービー)で誕生しました。当時から「条件を指定して検索する」という考え方は変わっておらず、現在もMySQL(マイエスキューエル)やPostgreSQL(ポストグレスキューエル)、Oracle(オラクル)など、あらゆるデータベース製品で使われています。
プログラミング言語やアプリケーションでも、WHERE句を使った検索処理は基本中の基本です。Webアプリのユーザー検索、在庫の抽出、売上分析など、あらゆる場面で活用されています。
11. 初心者が覚えておくポイント
WHERE句は、SQLを学ぶ上で避けて通れない構文です。まずは「=」「>」「<」のような基本的な比較演算子から慣れていきましょう。そのうえで、ANDやOR、LIKE、INなどの組み合わせ方を練習すれば、自由自在にデータを検索できるようになります。
データベース操作の基礎を固めるには、WHERE句を理解することがとても大切です。ゆっくり丁寧に覚えていけば、実務でも必ず役立つスキルになります。