SQL

最終更新日: 2024.01.30 (公開: 2024.01.26)

SQLのWHERE句とは?複数の条件を指定する方法について解説

SQLのWHERE句とは?複数の条件を指定する方法について解説

WHERE句は、テーブルの検索条件を指定する構文で、SQL構文の中でも使用頻度が高めです。本記事では、SQLのWHERE句の使い方と構文について解説します。

WHERE句とは、テーブルの検索条件を指定するための構文です。比較的使用頻度が高く、MySQLやPostgreSQLなどのデータベースを扱う際によく目にすることとなるでしょう。

そこで、SQL初心者に向けてWHERE句の使い方と構文について解説します。

SQLのWHERE句とは何か?

SQLはSELECT文でデータを抽出できますが、SELECT文だけでは指定したテーブルの全てのデータが抽出されてしまいます。そこで、条件を指定し、必要なデータだけ抽出したい場合に使われるのがWHERE句です。

WHERE句の性質上、SELECT文と組み合わせることが多くあり、データの更新対象を指定したい場合はUPDATE文と組み合わせることも可能です。

検索条件の設定は、データの数が多ければ多いほど必要となるため、うまく使いこなすことができれば膨大なデータを扱うことも可能となるでしょう。

SQLのWHERE句の基本的な比較演算子

WHERE句で検索条件を指定する際、さまざまな比較演算子が用いられます。基本的な比較演算子は以下の通りです。

比較演算子 意味 使用例 結果
= 等しい id = 5 idが5のデータのみ抽出されます
> 大きい id > 5 idが5より大きいデータが全て抽出されます
< 小さい id < 5 idが5より小さいデータが全て抽出されます
>= 以上 id >= 5 idが5以上のデータが全て抽出されます
<= 以下 id <= 5 idが5以下のデータが全て抽出されます
!= 等しくない id != 5 idが5ではないデータが全て抽出されます

基本的な比較演算子は、値の大小を比較し、その結果を抽出したい場合によく使われます。簡単に使用できますが、基本的な比較演算子だけでは複数の条件を指定できません。そのため、複数条件を指定してデータを抽出したい場合は後述する応用の演算子を使いましょう。

SQLのWHERE句の応用の演算子

複数の条件を指定したい場合は、以下のような応用の演算子を使用します。

演算子 意味
AND AかつB
OR AまたはB
BETWEEN A以上B以下
IN いずれかを含む
LIKE 文字列のパターンマッチ

応用的な演算子を使い、複数の条件を指定することでさらに詳細なデータ抽出が可能です。それぞれの演算子が具体的にどのように使用されるのか、実際のコードと併せて見ていきましょう。

AND演算子でAかつBを指定しよう

AND演算子は、2つの条件をどちらも満たすデータを抽出したい場合に使用します。たとえば「条件A AND 条件B」と記述した場合、「条件Aかつ条件B」のデータが抽出対象ですので、2つの条件を満たすデータを検索したい場合に活用しましょう。

また、「条件A AND 条件B AND 条件C」のように、ANDを2つ以上使用しても問題ありません。このように記述すればさらに複数のデータを拾うことができます。

OR演算子でAまたはBを指定しよう

OR演算子は、2つの条件のうちどちらか片方を満たすデータを抽出したい場合に使用します。たとえば「条件A OR 条件B」と記述した場合、「条件Aまたは条件B」のデータが抽出対象ですので、どちらかの条件を満たすデータを検索したい場合に活用しましょう。

なお、ANDの場合と同様に、ORも2つ以上使用できます。「条件A OR 条件B OR 条件C」のように記述すれば、条件A、条件B、条件Cいずれかの条件を満たすデータを抽出可能です。

BETWEEN演算子でAからBの範囲を検索しよう

BETWEEN演算子は、AからBなど範囲を指定して検索したい場合に使用します。たとえば「BETWEEN 条件A AND 条件B」と記述した場合、条件Aから条件Bまでの範囲のデータが抽出対象です。

AからBまでということは、 A以上B以下という定義と同じといえます。そのため、BETWEENを使わず「>=」や「<=」を使用しても記述できますが、条件がわかりづらくなってしまうため、基本的にはBETWEENを使用がおすすめです。

IN演算子で条件に合致するレコードを検索しよう

IN演算子は、複数の条件を指定し、いずれかの条件に合致するデータを検索したい場合に使用します。たとえば「IN (条件A, 条件B, 条件C)」と記述した場合、条件Aまたは条件Bまたは条件Cを満たすデータが抽出対象です。

処理としては「条件A OR 条件B OR 条件C」と同様です。しかし、ORを何度も使うと判読しづらいため、複数の条件のいずれかに合致するデータを検索する際はOR演算子ではなくIN演算子を使用するとよいでしょう。

LIKE演算子で文字列の部分一致を検索しよう

LIKE演算子は、特定の文字列を含むデータを検索したい場合に使用します。たとえば「LIKE ‘テスト%’」とした場合、テストから始まる文字列、「LIKE ‘%テスト%’」とした場合、テストを含む文字列が抽出対象です。

LIKEで使用している「%」はワイルドカードと呼ばれるもので、ほかに「_」などがあります。使いこなせればさまざまな文字列を検索できるようになるため、重要なものは覚えておくことをおすすめします。

なお、LIKEを使った文字列の検索は処理が早くないため、膨大なデータの検索にはあまり向いていません。

SQLのWHERE句の基本的な使い方を知ろう

SQLでWHERE句を使う際は「抽出条件」の記載が必要です。先述した比較演算子を使い条件を記述していきます。ここでは、以下のようにWHERE句を使って検索する方法について解説します。

  • WHEREを使って検索する方法
  • AND句を使ってA かつ Bを指定して検索する
  • OR句を使ってA または Bを指定して検索する
  • ANDとORを併用して条件を指定して検索する

なお、解説の際は以下のテーブルを使用します。

sample

id date name
1 01-20 Tanaka
2 03-03 Takahashi
3 07-17 Satou
4 11-23 Yamamoto
5 12-30 Kimura

WHEREを使って検索する方法

WHERE句を使ってデータを検索する場合は、WHERE句の後に条件式を指定しましょう。条件式を指定することで、その条件に合ったデータのみを抽出できます。基本的な演算子を使用したコードは以下の通りです。

SELECT * FROM sample
WHERE id <= 3; このコードの場合、idが3以下のデータが抽出されるため、実行すると以下のように表示されます。

id date name
1 01-20 Tanaka
2 03-03 Takahashi
3 07-17 Satou

また、以下のようにNOT演算子を使って条件を否定することも可能です。NOT演算子を使う場合は条件式を括弧で囲みましょう。

SELECT * FROM sample
WHERE NOT (id <= 3); このコードの場合、idが3以下ではないデータが抽出されるため、実行すると以下のように表示されます。

id date name
4 11-23 Yamamoto
5 12-30 Kimura

AND句を使ってA かつ B を指定して検索する

AND句を使う場合の構文は「SELECT * FROM テーブル WHERE 条件A AND 条件B」となり、実際のコードは以下の通りです。

SELECT * FROM sample
WHERE id <= 3 AND id > 1;

このコードの場合、idが3以下かつidが1より大きいデータが抽出されるため、実行すると以下のように表示されます。

id date name
2 03-03 Takahashi
3 07-17 Satou

また、以下のように複数のANDを使用して条件式を増やすことも可能です。

SELECT * FROM sample
WHERE id <= 3 AND id > 1 AND name = Takahashi;

このコードの場合、「idが3以下」「idが1より大きい」「nameがTakahashi」の全てを満たすデータが抽出されます。

id date name
2 03-03 Takahashi

OR句を使ってA またはB を指定して検索する

OR句を使う場合の構文は「SELECT * FROM テーブル WHERE 条件A OR 条件B」となり、実際のコードは以下の通りです。

SELECT * FROM sample
WHERE id <= 3 OR id = 5; このコードの場合、idが3以下またはidが5のデータが抽出されるため、実行すると以下のように表示されます。

id date name
1 01-20 Tanaka
2 03-03 Takahashi
3 07-17 Satou
5 12-30 Kimura

OR句も、ANDの場合と同様に複数のORを使用して条件式を増やすことが可能です。

SELECT * FROM sample
WHERE id <= 3 OR id = 5 OR name = Yamamoto; このコードの場合、idが3以下、idが5、nameがYamamotoのいずれかの条件を満たすデータが抽出されます。

id date name
1 01-20 Tanaka
2 03-03 Takahashi
3 07-17 Satou
4 11-23 Yamamoto
5 12-30 Kimura

ANDとORを併用して条件を指定して検索する

ANDとORは両方使用することも可能です。これらを併用することで、複数の条件を指定して検索できます。ANDとORを併用する場合の構文は「SELECT * FROM テーブル WHERE 条件A AND 条件B OR 条件C」となり、実際のコードは以下の通りです。

SELECT * FROM sample
WHERE id <= 3 AND id > 1 OR name = Yamamoto;

このコードの場合、idが3以下かつ1より大きい、またはnameがYamamotoのデータが抽出されるため、実行すると以下のように表示されます。

id date name
2 03-03 Takahashi
3 07-17 Satou
4 11-23 Yamamoto

ANDとORを併用する場合、両者は優先順位が違うため、記述した順番にかかわらずANDが先に実行されます。ORを先に実行させたい場合は、以下のようにORを使用した条件式を括弧で囲みましょう。

SELECT * FROM sample
WHERE id <= 3 AND (id > 1 OR name = Yamamoto);

このコードの場合、idが1より大きいまたはnameがYamamoto、かつidが3以下のデータが抽出されます。

id date name
2 03-03 Takahashi
3 07-17 Satou

このように、同じ式であっても実行される順番によって結果が変わるため、複数の条件式を組み合わせる場合は括弧を使うことを意識するとよいでしょう。

SQLのWHERE句の応用的な使い方を知ろう

次に、WHERE句の応用的な使い方について解説します。今回紹介する使い方は以下の通りです。

  • BETWEENを使用して範囲内のデータを抽出する
  • LIKEを使っていずれかの条件に一致する文字列を検索する
  • INを使っていずれかの条件に一致するレコードを検索する
  • NULLを検索する方法を知ろう

それぞれ詳しく解説します。

BETWEENを使用して範囲内のデータを抽出する

BETWEEN演算子を使用することで、範囲内に含まれているデータを抽出できます。構文は「SELECT * FROM テーブル WHERE 対象値 BETWEEN 条件A AND 条件B」となり、実際のコードは以下の通りです。

SELECT * FROM sample
WHERE id BETWEEN 2 AND 4;

このコードの場合、idが2から4までのデータが抽出されるため、以下のように表示されます。

id date name
2 03-03 Takahashi
3 07-17 Satou
4 11-23 Yamamoto

BETWEENを使った条件式は「id >= 2 AND id <= 4」のようにANDを使用しても同様の処理が可能です。しかし、BETWEENを使ったほうが可読性に優れているため、範囲指定したい場合は基本的にBETWEENを使うことをおすすめします。

また、上記の条件式からもわかるように、BETWEENは指定した値を含みます。「id > 2 AND id < 4」をBETWEENで記述したい場合は「WHERE id BETWEEN 2+1 AND 4-1;」のように記述しましょう。

LIKEを使っていずれかの条件に一致する文字列を検索する

LIKE演算子を使うことで、いずれかの条件に一致する文字列を検索できます。ただし、LIKE演算子だけでは完全に一致する条件しか検索できません。そこで「%」や「_」などのワイルドカードと呼ばれる文字を使用することで検索可能です。「%」は任意の文字列、「_」は任意の1文字が含まれる条件を追加できます。

構文は「SELECT * FROM テーブル WHERE 対象値 条件A」となり、実際のコードは以下の通りです。

SELECT * FROM sample
WHERE name LIKE ’Ta%’;

このコードの場合、nameの「Ta」から始まるデータが抽出されるため、以下のように表示されます。

id date name
1 01-20 Tanaka
2 03-03 Takahashi

INを使っていずれかの条件に一致するレコードを検索する

IN演算子は、いずれかの条件に一致するデータを検索できます。構文は「SELECT * FROM テーブル WHERE 対象値 IN (条件A, 条件B, 条件C…)」となり、実際のコードは以下の通りです。

SELECT * FROM sample
WHERE id IN (1, 3, 5);

このコードの場合、idが1,3,5のいずれかと一致するデータが抽出されるため、以下のように表示されます。

id date name
1 01-20 Tanaka
3 07-17 Satou
5 12-30 Kimura

また、NOTを使えば指定した値以外のデータを抽出することも可能です。たとえば「WHERE id NOT IN (1, 3, 5);」とした場合、idが1,3,5,以外、すなわちidが2,4のデータが抽出されます。

NULLを検索する方法を知ろう

プログラミングやデータベースにおいて、NULLは何のデータも含まれていない、無効な値を表します。そのため、通常の値のように比較演算子を使って検索することはできません。

NULLを検索する場合はIS NULL演算子を使いましょう。今回は以下のテーブルを使用します。

sample

id date name
1 01-20 Tanaka
2 NULL Takahashi
3 07-17 Satou
4 11-23 Yamamoto
5 NULL Kimura

構文は「SELECT * FROM テーブル WHERE 対象値 IS NULL」となり、実際のコードは以下の通りです。

SELECT * FROM sample
WHERE date IS NULL;

このコードの場合、dateがNULLのデータが抽出されるため、以下のように表示されます。

id date name
2 NULL Takahashi
5 NULL Kimura

また、「WHERE date IS NOT NULL;」のようにNOTを使えばNULLではないデータを検索することも可能です。この場合は以下のように表示されます。

id date name
1 01-20 Tanaka
3 07-17 Satou
4 11-23 Yamamoto

WHERE句を使いこなし、SQLの検索をしやすくしよう

本記事では、SQLのWHERE句の使い方と構文について解説しました。WHERE句にはさまざまな演算子があり、ANDやORを組み合わせれば複数の条件を指定することが可能です。

演算子ごとに記述方法にはやや違いがありますが構文自体は短いので、使いこなすことはそう難しくはないでしょう。WHERE句を使用すれば、膨大なデータが保存されたデータベースから任意のデータを簡単に検索できるため、ぜひ積極的に活用してみてください。

アクセスランキング 人気のある記事をピックアップ!

    コードカキタイがオススメする記事!

    1. 子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

      2024.01.26

      子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

      #プログラミングスクール

    2. 【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

      2022.01.06

      【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

      #プログラミングスクール

    3. 【未経験でも転職可】30代におすすめプログラミングスクール8選!

      2024.01.26

      【未経験でも転職可】30代におすすめプログラミングスクール8選!

      #プログラミングスクール

    4. 初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

      2024.01.26

      初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

      #JAVA

    5. 忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

      2024.01.26

      忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

      #プログラミングスクール

    1. 【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

      2022.01.06

      【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

      #プログラミングスクール

    2. 【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

      2024.01.26

      【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

      #プログラミングスクール

    3. 【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

      2024.01.26

      【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

      #プログラミングスクール

    4. 【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

      2024.01.26

      【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

      #プログラミングスクール

    5. 【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

      2024.01.26

      【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

      #プログラミングスクール