SQL WHERE句の使い方と効果的な活用法

SQLの勉強をしているけれど、

・データベースからデータを抽出する方法が分からない…。
・どの演算子を使えば適切なデータを抽出できるか分からない…。

こんな悩みはありませんか?そこで、この記事では、

・WHERE句を使用したデータ抽出方法
・演算子を用いた条件の指定方法

について詳しく解説します。

公開日:2023年9月28日

SQL WHERE句の役割

SQLのWHERE句の役割は、条件を指定してデータテーブルの中から必要なデータを抽出することです。例えば、特定のキーワードを含む文字列や、指定した数よりも大きい数値などの条件をWHERE句で記述できます。

データテーブル内に膨大なデータが含まれている場合であっても、WHERE句を使えば特定の条件を満たすデータを簡単に取得することが可能です。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

単一条件の指定の方法

条件を1つだけ指定してデータを抽出したい場合、次のような形でWHERE句を記述します。

例えば、以下のようなFoodという名称のテーブルから、styleの列が和食という単一条件を満たすデータを抽出するWHERE句は次の通りです。

Foodテーブル

WHERE句の例

フィールド名に「*」を指定すると、テーブル内の全てのフィールドを対象としてデータを抽出できます。

▼出力結果

 

複数の条件の組み合わせ

2つ以上の条件を組み合わせたい場合、論理演算子のANDまたはORを用います。各演算子の役割や使い方は次の通りです。

AND演算子:複数の条件を満たすデータを抽出

複数の条件をすべて満たすデータを抽出したい場合、AND演算子を使います。例えば、先ほどのFoodテーブルの中から、styleがイタリアンでkcal300未満のデータを抽出するWHERE句は次の通りです。

WHERE句の例

▼出力結果

 

OR演算子:いずれかの条件を満たすデータを抽出

複数の条件のいずれかを満たすデータを抽出したい場合、OR演算子を使います。例えば、styleが和食または中華のデータを抽出するWHERE句は次の通りです。

WHERE句の例

▼出力結果

 

比較演算子(=<><=>=<>!=)の活用

比較演算子を使うと、データの一致や大小などの条件指定が可能です。比較演算子はWHERE句の中でよく用いられます。

比較演算子 意味  
= 演算子の左右の値が等しい  
<   演算子の左の値が右の値より小さい  
>   演算子の左の値が右の値より大きい  
<=   演算子の左の値が右の値より小さい、または等しい  
>=   演算子の左の値が右の値より大きい、または等しい  
<> または !=   演算子の左右の値が等しくない

例えば、Foodテーブルでkcal300より小さく、かつstyleが和食ではないデータを抽出するWHERE句は次の通りです。

WHERE句の例

▼出力結果

 

検索に便利な演算子

ここからは、検索条件を絞り込むために便利な「LIKE」、「BETWEEN」、「IN」、「NOT」演算子について解説します。

LIKE

LIKE演算子は特定の条件に一致する文字列を検索できる演算子です。ワイルドカードと呼ばれる特殊文字を含めてLIKE演算子を使うと、部分一致や前方一致、後方一致など細かな条件を指定できます。ワイルドカードは、0文字以上の任意の文字列を表す%と、一文字の任意の文字を表す_2種類です。

例えば、Foodテーブルでallergensの値に「卵」を含むデータを抽出したい場合、WHERE句は次のように記述します。

WHERE句の例

「卵」の前後に%を付けると、allergenの値が「卵」のみの場合や「卵、ごま」、「小麦、卵」など部分一致する様々なパターンの指定が可能です。

▼出力結果

また、nameの値が「丼」で終わる後方一致のデータを抽出したい場合は、「丼」の前に%を付けます。

WHERE句の例

▼出力結果

 

BETWEEN演算子:範囲の指定

BETWEEN演算子を使うと、最小値と最大値を指定し、それらの範囲内にあるデータを抽出できます。例えば、Foodテーブルのkcal200から400の間にあるデータを抽出するWHERE句は次の通りです。

WHERE句の例

▼出力結果

 

IN演算子:値の指定

IN演算子は、指定した複数の値のいずれかに一致するデータを抽出できる演算子です。IN演算子を使うと、複数の条件を満たすデータを効率的に抽出できます。

例えば、Foodテーブルでnumberの値が030507のデータを抽出するWHERE句は次の通りです。

WHERE句の例

▼出力結果

 

NOT演算子:指定した条件でないデータを抽出

NOT演算子を使うと、指定した条件にあてはまらないデータを抽出できます。ほかの演算子とNOT演算子の組み合わせにより、複雑な条件を指定することが可能です。

例えば、次のようなWHERE句を記述すると、Foodテーブルのallergensに卵を含まないデータを抽出できます。

WHERE句の例

▼出力結果

 

NULL値の取り扱い

SQLにおいて、値が存在しない場合や不明な場合はNULLと呼ばれる特別な値で表されます。例えば、下記のようなCustomerテーブルで、値が存在しないデータにはNULL値が割り当てられます。

Customerテーブル

これは、3番目の高橋三子さんのメールアドレスが不明な場合を表す例です。

 

IS NULL:NULLの指定

NULL値を含むデータを抽出したい場合、IS NULLという特別な演算子を使います。例えば、CustomerテーブルでmailNULLのデータを抽出するWHERE句の書き方は次の通りです。

WHERE句の例

mailの値がNULLの場合に条件が真(TRUE)となり、次のような結果が出力されます。

▼出力結果

 

IS NOT NULL:NULL以外の指定

IS NOT NULLという演算子を使うと、NULL値を含まないデータを抽出できます。例えば、CustomerテーブルでmailNULLではないデータを抽出するWHERE句は次の通りです。

WHERE句の例

mailの値がNULLではない場合に条件が真(TRUE)となり、次のような結果が出力されます。

▼出力結果

 

まとめ

SQLのWHERE句を使うと、様々な条件を指定し、必要なデータを抽出することが可能です。WHERE句には複数の演算子があり、値の大小関係や文字列の一致、複数条件の組み合わせなどを表現できます。WHERE句の記述方法を学び、データベースの検索に役立てましょう。

SQLのWHERE句を詳しく知りたい人には、下記の講座がおすすめです。

Udemyおすすめ講座

【SQL】未経験者もこれ一本でOK!MySQLで学ぶ「SQL」「データベース基礎」講座【プログラミング初心者向け】

【SQL】未経験者もこれ一本でOK!MySQLで学ぶ「SQL」「データベース基礎」講座【プログラミング初心者向け】

4.2(1,057 件の評価)

6,785 人の受験生

作成者: ウズウズカレッジ (UZUZ COLLEGE)(IT分野(Java/データベース/Webアプリケーション/CCNA/LinuC/Linux/ITパスポート))
ウズウズカレッジ 学習サポート(IT分野(Java/データベース/Webアプリケーション/CCNA/LinuC/Linux/ITパスポート))

完全未経験でも安心!MySQLを使って「SQL」「データベース基礎」をゼロから学べます。累計登録者数25,000人超のウズウズカレッジが、“絶対挫折させない”を目標に作った講座です。豊富な図解と丁寧な解説で基礎から実践までマスターできます。

\無料でプレビューをチェック!/

講座を見てみる

レビューの一部をご紹介

評価:★★★★★
画面だけではなく、後で見返せることができる教材(PDF)も充実しているので、不明なところももあとあと読み返して理解できます。

評価:★★★★★
循環に受講し3講座目が終了しました。全くの素人ですが,丁寧に解説してくれており時間さえ作れれば継続できるかと思います。続けて受講したいと思います。

データベースのプログラム言語を習得して、業務効率化に取り組みましょう!