【SQL入門】WHEREで検索条件を指定する方法を解説

  • 2024.11.20
       
【SQL入門】WHEREで検索条件を指定する方法を解説

WHERE句とは

SQLのWHERE句とはレコードをフィルターする条件を指定するクエリで、抽出や更新の対象となるデータの絞り込みを行う場合に用いられます。たとえば、データを抽出する「SELECT」文と組み合わせれば抽出するデータに条件を付けることで抽出対象を絞り込めたり、データを更新する「UPDATE」文と組み合わせればデータの更新対象を絞り込めます。

このように、WHERE句を扱うことでデータベースに保存された膨大なデータの中から条件にあてはまるレコードだけを抽出したり、更新したりできるようになります。

【基本構文】

SELECT文と組み合わせた場合の構文は次のとおりです。

SELECT フィールド名 FROM テーブル名 WHERE 条件

あなたのご希望に沿った案件が必ず見つかります
【フリーランス向け】高収入好待遇の案件をご紹介

TECH MANIA フリーランス

≫まずは簡単60秒で無料お問い合わせから≪

WHERE句で使用できる演算子【基本編】

データの検索条件を指定するのに用いる演算子の一覧表です。

演算子 意味
= 等しい従業員番号 = 1000
>大きい従業員番号 > 1000
>=以上従業員番号 >= 1000
<小さい従業員番号 < 1000
<= 以下従業員番号 <= 1000
!=等しくない従業員番号 != 1000

これらの演算子を用いた WHERE句のサンプルコードの実行例を紹介します。

WHERE句の使い方

説明するにあたって次のサンプルテーブルを用います。

「従業員(employee)」テーブル

従業員ID
(employees_id)
生年月日
(birth_date)
名前(first_name)名字
(last_name)
性別
(gender)
入社日
(hire_date)
998 1990-07-30 Takuya Satou M 2021-04-01
999 1995-12-24 Rin Suzuki F 2019-10-05
1000 1988-06-06 Kenta Takahashi M 2019-07-20
1001 1997-03-08 Mei Tanaka F 2022-05-27
1002 1983-11-11 Taichi Itou M 2006-02-12

まず、条件を付けずに従業員テーブルのデータを抽出してみましょう。

【実行コード】

SELECT * FROM employees;

従業員ID
(employees_id)
生年月日
(birth_date)
名前(first_name)名字
(last_name)
性別
(gender)
入社日
(hire_date)
998 1990-07-30 Takuya Satou M 2021-04-01
999 1995-12-24 Rin Suzuki F 2019-10-05
1000 1988-06-06 Kenta Takahashi M 2019-07-20
1001 1997-03-08 Mei Tanaka F 2022-05-27
1002 1983-11-11 Taichi Itou M 2006-02-12

次に従業員ID(employees_id)が 1000未満のデータを抽出します。

【実行コード】

SELECT * FROM employees WHERE employees_id<1000;

【実行結果】

従業員ID
(employees_id)
生年月日
(birth_date)
名前(first_name)名字
(last_name)
性別
(gender)
入社日
(hire_date)
998 1990-07-30 Takuya Satou M 2021-04-01
999 1995-12-24 Rin Suzuki F 2019-10-05

このように 1000未満のデータを検索できました。

WHERE句で使用できる演算子【応用編】

次に WHERE句をより便利にする応用的な演算子を一覧で紹介します。

演算子 意味
AND 左辺 かつ 右辺 従業員番号 = 1000 AND 従業員番号 = 1001
OR 左辺 または 右辺 従業員番号 = 1000 OR 従業員番号 = 1001
BETWEEN A AND B A 以上 B 以下 従業員番号 BETWEEN 1000 AND 2000
IN いずれかを含む 従業員番号 IN (1000, 2000)
LIKE 文字列の1部を含むパターン

% = 0文字以上の任意の文字列
_ = 任意の1文字
名前 LIKE ‘A%’
名前 LIKE ‘A_’
IS NULL NULL値のフィールド 名前 IS NULL
IS NOT NULL 値のあるフィールド 名前 IS NOT NULL

サンプルコードを用いて具体的に解説していきます。

AND演算子

従業員ID(employees_id)が998以上かつ従業員ID(employees_id)が1001未満という条件で検索するには次のように記述します。

【実行コード】

SELECT * FROM employees WHERE employees_id>=998 AND employees_id<1001;

【実行結果】

従業員ID
(employees_id)
生年月日
(birth_date)
名前(first_name)名字
(last_name)
性別
(gender)
入社日
(hire_date)
998 1990-07-30 Takuya Satou M 2021-04-01
999 1995-12-24 Rin Suzuki F 2019-10-05
1000 1988-06-06 Kenta Takahashi M 2019-07-20

このように 2つの条件を満たすデータを検索できます。

OR演算子

従業員ID(employees_id)が998または従業員ID(employees_id)が1000という条件で検索するには次のように記述します。

【実行コード】

SELECT * FROM employees WHERE employees_id=998 OR employees_id=1000;

【実行結果】

従業員ID
(employees_id)
生年月日
(birth_date)
名前(first_name)名字
(last_name)
性別
(gender)
入社日
(hire_date)
998 1990-07-30 Takuya Satou M 2021-04-01
1000 1988-06-06 Kenta Takahashi M 2019-07-20

このように従業員ID(employees_id)が998または1000のデータを検索できます。

BETWEEN演算子

従業員ID(employees_id)が1000以上かつ1002 以下という条件で検索するには次のように記述します。

【実行コード】

SELECT * FROM employees WHERE employees_id BETWEEN 1000 AND 1002;

【実行結果】

従業員ID
(employees_id)
生年月日
(birth_date)
名前(first_name)名字
(last_name)
性別
(gender)
入社日
(hire_date)
1000 1988-06-06 Kenta Takahashi M 2019-07-20
1001 1997-03-08 Mei Tanaka F 2022-05-27
1002 1983-11-11 Taichi Itou M 2006-02-12

このように BETWEEN条件で範囲を指定できます。

IN演算子

従業員ID(employees_id)が 998,1000,1002 のいずれかに一致という条件で検索するには次のように記述します。

【実行コード】

SELECT * FROM employees WHERE employees_id IN (998,1000,1002);

【実行結果】

従業員ID
(employees_id)
生年月日
(birth_date)
名前(first_name)名字
(last_name)
性別
(gender)
入社日
(hire_date)
998 1990-07-30 Takuya Satou M 2021-04-01
1000 1988-06-06 Kenta Takahashi M 2019-07-20
1002 1983-11-11 Taichi Itou M 2006-02-12

このように従業員ID(employees_id)で検索するデータを指定できます。

LIKE演算子

fitst_name が”Ta”で始まるレコードを検索するには次のように記述します。
文字列中の「%」は 0文字以上の任意の文字列、「_」は、任意の 1文字を表します。

【実行コード】

SELECT * FROM employees WHERE first_name LIKE 'Ta%';

【実行結果】

従業員ID
(employees_id)
生年月日
(birth_date)
名前(first_name)名字
(last_name)
性別
(gender)
入社日
(hire_date)
998 1990-07-30 Takuya Satou M 2021-04-01
1002 1983-11-11 Taichi Itou M 2006-02-12

このように、文字列の部分一致で検索することもできます。

▼ IN句の使い方について知りたい方はこちら

【SQL入門】IN句の使い方やサブクエリの活用方法を解説

▼ BETWEEN句の使い方について知りたい方はこちら

【SQL入門3】between演算子で抽出する範囲を指定する

IS NULL演算子/ IS NOT NULL演算子

テーブル内のフィールドに値が入っていないと、そのフィールドの値は NULL になります。

IS NULL演算子を使うと、フィールドに NULL が入っているという条件で検索することができます。

【基本構文】

WHERE カラム名 IS NULL

反対に、 IS NOT NULL演算子を使うと、値が NULL ではないという条件で検索することができます。

【基本構文】

WHERE カラム名 IS NOT NULL

今回サンプルとして使用しているテーブルでは NULL が存在しないので、 IS NULL では該当するデータがなく、 IS NOT NULL では全てのデータが返ってきます。

▼NULLの扱い方について知りたい方はこちら

まとめ

今回はSQLのWHERE句について、基礎から応用までひととおり解説してきました。

WHERE句はSQLを操作するうえで必須のクエリです。WHERE句の使い方を忘れてしまったら、この記事を読み直してしっかり覚えていきましょう!

SQL関連記事

SQLの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、SQLに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Programmingカテゴリの最新記事