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

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

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

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

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

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

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

目次

WHERE句とは

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

sql_where_zu

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

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

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

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

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

基本的な演算子

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

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

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

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句をもっと便利に使うことができるの応用的な演算子の使い方についてみていきます。

応用的な演算子

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

演算子意味
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

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

まとめ

いかかでしたか?

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

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

この記事を書いた人

システムエンジニア歴15年のオオイシです!好物は Java と Ruby。プログラミング、システムアーキテクトからマネジメントに到るまでなんでも食べます。
システム開発の相談やお困りごとがあればお気軽に
makoto.oishi.0705@gmail.com まで連絡頂けると幸いです

目次