この記事では、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構文です。
WHERE句を使う目的は、データの検索対象をしぼりこむためにSELECT文と組み合わせたり、データの更新対象を指定するためにUPDATE文と組み合わせて使います。
SELECT文と組み合わせた場合の構文は次のとおりです。
SELECT フィールド名 FROM テーブル名 WHERE 演算子を使って検索条件を指定
検索条件の詳しい書き方については、次項で詳しく説明していきますので、ぜひ読み進めてみてください。
なお、SQL開発環境や本記事で扱うサンプルデータの準備方法については、こちらで詳しく解説していますので、ぜひ参考にしてください!
なお、副業での収入獲得を目指しているものの、どんな仕事が自分に合うかわからない人は「副業診断」をお試しください。
かかる時間はたった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_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10001 | 1953-09-02 | Georgi | Facello | M | 1986-06-26 |
10002 | 1964-06-02 | Bezalel | Simmel | F | 1985-11-21 |
10003 | 1959-12-03 | Parto | Bamford | M | 1986-08-28 |
10004 | 1954-05-01 | Chirstian | Koblick | M | 1986-12-01 |
10005 | 1955-01-21 | Kyoichi | Maliniak | M | 1989-09-12 |
実行後:
emp_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10001 | 1953-09-02 | Georgi | Facello | M | 1986-06-26 |
10002 | 1964-06-02 | Bezalel | Simmel | F | 1985-11-21 |
10003 | 1959-12-03 | Parto | Bamford | M | 1986-08-28 |
このように10003以下のデータを検索することができました。カンタンにテーブルデータを検索できることが理解いただけたと思います!
つづいて、WHERE句をもっと便利に使うことができるの応用的な演算子の使い方についてみていきます。
なお、IT企業への転職や副業での収入獲得を見据え、独学でSQLを習得できるか不安な人は「侍エンジニア」をお試しください。
侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。
「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や副業収入の獲得が実現できますよ。
\ 給付金で受講料が最大80%OFF /
応用的な演算子
まずは、一覧表にまとめてみました。
演算子 | 意味 | 例 |
---|---|---|
AND | 左辺 かつ 右辺 | 従業員番号 = 100020 AND 従業員番号 = 100050 |
OR | 左辺 または 右辺 | 従業員番号 = 100020 OR 従業員番号 = 100050 |
BETWEEN a AND b | a 以上 b 以下 | 従業員番号 BETWEEN a AND b |
IN | いずれかを含む | 従業員番号 IN (100020, 100050) |
LIKE | 文字列の1部を含むパターン ※ % = 0文字以上の任意の文字列 _ = 任意の1文字 | 名前 LIKE ‘侍%’ 名前 LIKE ‘侍_’ |
IS NULL | NULL値のフィールド | 名前 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_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10003 | 1959-12-03 | Parto | Bamford | M | 1986-08-28 |
10004 | 1954-05-01 | Chirstian | Koblick | M | 1986-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_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10001 | 1953-09-02 | Georgi | Facello | M | 1986-06-26 |
10003 | 1959-12-03 | Parto | Bamford | M | 1986-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_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10002 | 1964-06-02 | Bezalel | Simmel | F | 1985-11-21 |
10003 | 1959-12-03 | Parto | Bamford | M | 1986-08-28 |
10004 | 1954-05-01 | Chirstian | Koblick | M | 1986-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_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10001 | 1953-09-02 | Georgi | Facello | M | 1986-06-26 |
10003 | 1959-12-03 | Parto | Bamford | M | 1986-08-28 |
10005 | 1955-01-21 | Kyoichi | Maliniak | M | 1989-09-12 |
文字列の部分一致を検索するLIKE演算子
LIKE演算子の使い方を理解していただくために、
- fitst_name(姓) が”Kyo”で始まるレコード
を検索する、次のサンプルコードを確認してみましょう。
また、文字列中の「%」や「_」は、
- % → 0文字以上の任意の文字列
- _ → 任意の1文字
の意味となります。
SELECT * FROM employees WHERE first_name LIKE 'Kyo%'
実行結果:
emp_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10005 | 1955-01-21 | Kyoichi | Maliniak | M | 1989-09-12 |
10922 | 1953-10-27 | Kyoichi | Wossner | M | 1992-08-09 |
11547 | 1960-03-30 | Kyoichi | Flexer | F | 1991-01-18 |
12645 | 1955-04-01 | Kyoichi | Decaestecker | F | 1990-01-03 |
12963 | 1962-11-22 | Kyoichi | Azevdeo | M | 1987-06-09 |
このように、文字列の部分一致で検索することが出来ました。
なお、IT企業への転職や副業での収入獲得を見据え、独学でSQLを習得できるか不安な人は「侍エンジニア」をお試しください。
侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。
「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や副業収入の獲得が実現できますよ。
\ 給付金で受講料が最大80%OFF /
まとめ
いかかでしたか?
今回はSQLのWHERE句について解説しました。WHERE句はテーブルデータの検索条件を指定するSQLの構文です。
WHERE句を使えるようになると、データベースに保存された大量データの中からレコードを検索することが可能になるので、ぜひ活用してください。そして、WHERE句の忘れてしまったらこの記事を確認してくださいね!