【SQL入門】WHEREで検索条件の指定方法をわかりやすく解説

この記事では、SQLのWHEREで検索条件を指定する方法を解説します。

こんにちは!システムエンジニアのオオイシです。

SQLのWHERE句をご存知でしょうか?

WHERE句を使えるようになると、データベースに保存された大量データの中からレコードを検索することが可能になります。WHERE句の使い方を知りたい!と考えている人のためにこの記事では、

  • WHERE句とは
  • 基本的な演算子一覧
  • WHERE句を使って条件検索してみよう
  • A かつ B を検索するAND演算子
  • A または B を検索するOR演算子
  • A から B の範囲を検索するBETWEEN演算子
  • いずれかの条件に一致するレコードを検索するIN演算子
  • 文字列の部分一致を検索するLIKE演算子

などの基本的な解説から応用的な使い方関しても解説していきます。

今回はそんなWHERE句の使い方をわかりやすく解説します!

この記事の要約
  • WHERE句はテーブルデータの検索条件を指定するSQL構文
  • データの検索対象のしぼりこみや更新対象の指定がWHERE句を使う主な目的
  • WHERE句はSELECT文やUPDATE文と組み合わせて使う
目次

WHERE句とは

WHERE句とは、テーブルデータの検索条件を指定するためのSQL構文です。

sql_where_zu

WHERE句を使う目的は、データの検索対象をしぼりこむためにSELECT文と組み合わせたり、データの更新対象を指定するためにUPDATE文と組み合わせて使います。

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

SELECT
 フィールド名
FROM
 テーブル名
WHERE
 演算子を使って検索条件を指定

検索条件の詳しい書き方については、次項で詳しく説明していきますので、ぜひ読み進めてみてください。

なお、SQL開発環境や本記事で扱うサンプルデータの準備方法については、こちらで詳しく解説していますので、ぜひ参考にしてください!

【SQL入門】初心者必見!SQL開発環境構築おすすめの方法
更新日:2024年5月6日

なお、副業での収入獲得を目指しているものの、どんな仕事が自分に合うかわからない人は「副業診断」をお試しください。

かかる時間はたった1分ほど。5つの質問に答えるだけで、自分にあう副業を診断してもらえます。

自身が取り組みやすい副業で収入を獲得したい人は、ぜひ一度お試しください。

\ 5つの質問に答えるだけ /

基本的な演算子

データの検索条件を指定するために使う演算子の一覧です。

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

これらの演算子を使って、WHERE句のサンプルコードの実行例をみていきましょう。

なお、本当にSQLが自分にあう言語なのか、どう学習を進めればいいのかなどがあいまいな人は「プログラミング学習プラン診断」をお試しください。

かかる時間は1分ほど。4つの質問に答えるだけで、あなたにあう言語や学習プランを診断してもらえます。

効率よくプログラミングを学習したい人は、ぜひ一度お試しください。

\ 4つの質問に答えるだけ /

WHERE句を使って条件検索してみよう

emp_no(従業員番号)が10003以下のデータを抽出するSQLは次のとおりです。

SELECT
  *
FROM
  employees
WHERE
  emp_no <= 10003

実行前:

emp_nobirth_datefirst_namelast_namegenderhire_date
100011953-09-02GeorgiFacelloM1986-06-26
100021964-06-02BezalelSimmelF1985-11-21
100031959-12-03PartoBamfordM1986-08-28
100041954-05-01ChirstianKoblickM1986-12-01
100051955-01-21KyoichiMaliniakM1989-09-12

実行後:

emp_nobirth_datefirst_namelast_namegenderhire_date
100011953-09-02GeorgiFacelloM1986-06-26
100021964-06-02BezalelSimmelF1985-11-21
100031959-12-03PartoBamfordM1986-08-28

このように10003以下のデータを検索することができました。カンタンにテーブルデータを検索できることが理解いただけたと思います!

つづいて、WHERE句をもっと便利に使うことができるの応用的な演算子の使い方についてみていきます。

なお、IT企業への転職や副業での収入獲得を見据え、独学でSQLを習得できるか不安な人は「侍エンジニア」をお試しください。

侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。

「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や副業収入の獲得が実現できますよ。

\ 給付金で受講料が最大80%OFF /

応用的な演算子

まずは、一覧表にまとめてみました。

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

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

具体的なサンプルコードについては次項で詳しく解説してします!

A かつ B を指定するAND演算子

AND演算子の使い方を理解していただくために、

  • emp_no(従業員番号) が 10003 以上 かつ ・・・ A
  • emp_no(従業員番号) が 10005 未満 ・・・ B


の条件で検索する次のサンプルコードを確認してみましょう。

SELECT
  *
FROM
  employees
WHERE
  emp_no >= 10003 AND
  emp_no <  10005

実行結果:

emp_nobirth_datefirst_namelast_namegenderhire_date
100031959-12-03PartoBamfordM1986-08-28
100041954-05-01ChirstianKoblickM1986-12-01

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

A または B を指定するOR演算子

OR演算子の使い方を理解していただくために、

  • emp_no(従業員番号) が 10001 または ・・・ A
  • emp_no(従業員番号) が 10003 ・・・ B


の条件で検索する、次のサンプルコードを確認してみましょう。

SELECT
  *
FROM
  employees
WHERE
  emp_no = 10001 OR
  emp_no = 10003

実行結果:

emp_nobirth_datefirst_namelast_namegenderhire_date
100011953-09-02GeorgiFacelloM1986-06-26
100031959-12-03PartoBamfordM1986-08-28

このようにemp_no(従業員番号)が10001 または 10003 のデータを検索することができました。

A からB の範囲を検索するBETWEEN演算子

BETWEEN演算子の使い方を理解していただくために、

  • emp_no(従業員番号) が 10002 以上 ・・・ A
  • emp_no(従業員番号) が 10004 以下 ・・・ B


の条件で検索する次のサンプルコードを確認してみましょう。

SELECT
  *
FROM
  employees
WHERE
  emp_no BETWEEN 10002 AND 10004

実行結果:

emp_nobirth_datefirst_namelast_namegenderhire_date
100021964-06-02BezalelSimmelF1985-11-21
100031959-12-03PartoBamfordM1986-08-28
100041954-05-01ChirstianKoblickM1986-12-01

このようにBETWEEN条件で簡単に範囲指定することができました。

なお、次のように基本的な演算子を使っても同じように記述することができます。

SELECT
  *
FROM
 employees
WHERE
  emp_no  >= 10002 AND
  emp_no  <= 10004

BETWEENを使った方が直感的でわかりやすいですね。

いずれかの条件に一致するレコードを検索するIN演算子

IN演算子の使い方を理解していただくために、

  • emp_no(従業員番号) が 10001,10003,10005のいずれかに一致


を検索する次のサンプルコードを確認してみましょう。

SELECT
  *
FROM
  employees
WHERE
 emp_no IN (10001,10003,10005)

実行結果:

emp_nobirth_datefirst_namelast_namegenderhire_date
100011953-09-02GeorgiFacelloM1986-06-26
100031959-12-03PartoBamfordM1986-08-28
100051955-01-21KyoichiMaliniakM1989-09-12

文字列の部分一致を検索するLIKE演算子

LIKE演算子の使い方を理解していただくために、

  • fitst_name(姓) が”Kyo”で始まるレコード


を検索する、次のサンプルコードを確認してみましょう。

また、文字列中の「%」や「_」は、

  • %  → 0文字以上の任意の文字列
  • _  → 任意の1文字


の意味となります。

SELECT
  *
FROM
  employees
WHERE
  first_name LIKE 'Kyo%'

実行結果:

emp_nobirth_datefirst_namelast_namegenderhire_date
100051955-01-21KyoichiMaliniakM1989-09-12
109221953-10-27KyoichiWossnerM1992-08-09
115471960-03-30KyoichiFlexerF1991-01-18
126451955-04-01KyoichiDecaesteckerF1990-01-03
129631962-11-22KyoichiAzevdeoM1987-06-09

このように、文字列の部分一致で検索することが出来ました。

なお、IT企業への転職や副業での収入獲得を見据え、独学でSQLを習得できるか不安な人は「侍エンジニア」をお試しください。

侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。

「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や副業収入の獲得が実現できますよ。

\ 給付金で受講料が最大80%OFF /

まとめ

いかかでしたか?

今回はSQLのWHERE句について解説しました。WHERE句はテーブルデータの検索条件を指定するSQLの構文です。

WHERE句を使えるようになると、データベースに保存された大量データの中からレコードを検索することが可能になるので、ぜひ活用してください。そして、WHERE句の忘れてしまったらこの記事を確認してくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次