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

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

WHERE句とは

WHERE句は、テーブルデータの検索条件を指定するための SQL構文です。
WHERE句という抽出条件がテーブルデータと重なる部分を抽出します。
WHERE句を扱えるようになれば、データベースに保存された膨大なデータの中から特定のレコードを検索できるようになります。

WHERE句と SELECT文と組み合わせることでデータの検索対象のしぼりこみやUPDATE文と組み合わせることでデータの更新対象の指定ができます。

UPDATE文と組み合わせた場合の構文は次のとおりです。
UPDATE
 フィールド名
FROM
 テーブル名
WHERE
 演算子を使って更新条件を指定

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

TECH MANIA フリーランス

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

基本的な演算子

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

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

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

WHERE句を用いた条件検索の実行例

employees_no (従業員番号) が 1000未満のデータを抽出する SQLは次のように表します。

SELECT
  *
FROM
  employees
WHERE
  employees_no < 1000

実行前

employees_no 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

実行後

employees_no 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句をより便利にする応用的な演算子を一覧で紹介します。

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

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

SELECT
  *
FROM
  employees
WHERE
  employees_no >= 998 AND
  employees_no <  10001

実行結果

employees_no 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演算子

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

SELECT
  *
FROM
  employees
WHERE
  employees_no = 998 OR
  employees_no = 1000

実行結果

employees_no 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

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

BETWEEN演算子

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

SELECT
  *
FROM
  employees
WHERE
  employees_no BETWEEN 1000 AND 1002

実行結果

employees_no 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演算子

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

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

実行結果

employees_no 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

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

LIKE演算子

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

SELECT
  *
FROM
  employees
WHERE
  first_name LIKE 'Ta%'

実行結果

employees_no 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
1010 1992-07-10 Tae Katou F 2018-09-08

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

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

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

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

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

Programmingカテゴリの最新記事