WHERE句を使ったデータの絞り込み方法
前回はSELECT文を使ったデータの取得方法について学びました。
しかし、SELECT文だけでは対象のデータを全て取得してしまい、必要なデータを探すのが
大変ですよね。
そんな必要なデータを絞り込んで出力したいときに使うのがWHERE句です。
WHERE句の基本構文
SELECT 列名 FROM 表名 WHERE 絞り込み条件; |
WHERE句は、基本的にFROM句の後に記述します。
使用例として、学生表の年が2年生の生徒を取得したい場合は以下の通りです。
SELECT * FROM 学生 WHERE 年 = 2;
実行してみると、年が2のデータのみ取得していることが分かります。
比較列のデータ型が文字列または日付の場合は、シングルクォーテーション(‘)で囲む必要が
あるので注意しましょう。
比較演算子
条件の指定には「=」以外にも様々な演算子を使うことができます。
以下に比較演算子の一覧を記載しますので、色々試してみましょう。
演算子 | 解説 | 使用例 |
= | 比較結果が等しい場合にデータを出力します。 | SELECT * FROM 学生 WHERE 年 = 2; |
!=、<> | 比較結果が等しくない場合にデータを出力します。 | SELECT * FROM 学生 WHERE 年 <> 2; |
> | 対象が比較値より大きい場合データを出力します。 | SELECT * FROM 学生 WHERE 年 > 2; |
< | 対象が比較値より小さい場合データを出力します。 | SELECT * FROM 学生 WHERE 年 > 2; |
>= | 対象が比較値以上場合データを出力します。 | SELECT * FROM 学生 WHERE 年 >= 2; |
<= | 対象が比較値以下場合データを出力します。 | SELECT * FROM 学生 WHERE 年 >= 2; |
(NOT)BETWEEN 比較値1 AND 比較値2 |
対象が比較値1以上、比較値2以下の場合データを出力します。 NOTを付けると比較値より小さく、比較値2より大きい場合に出力されます。 |
SELECT * FROM 学生 WHERE 学籍番号 BETWEEN 2 AND 4;SELECT * FROM 学生 WHERE 学籍番号 NOT BETWEEN 2 AND 4; |
(NOT) IN (値1,値2…) |
対象がINで指定された値のいずれかに等しい場合にデータを出力します。 NOTを付けると、指定された値に等しくない場合にデータが出力されます。 |
SELECT * FROM 学生 WHERE 学籍番号 IN(2,4);SELECT * FROM 学生 WHERE 学籍番号 NOT IN(2,4); |
IS (NOT) NULL | 対象がNULLの場合データを出力します。 NOTを付けると、対象がNULLでない場合データを出力します。 |
SELECT * FROM 学生 WHERE 部活ID IS NULL;SELECT * FROM 学生 WHERE 部活ID IS NOT NULL; |
複数の条件を指定
絞り込みの条件は、ANDやORを使うことで複数指定することができます。
SELECT * FROM 学生 WHERE 年 = 2 AND 組 = 'A';
↑の場合、年が2かつ組がAの時にデータが出力されます。
ANDは「かつ」ORは「または」と言う言葉に置き換えて使い分けるようにしましょう。
ANDとORには優先度があり、ANDが先に評価されORが後に評価されます。
SELECT * FROM 学生 WHERE 年 = 2 AND 組 = 'A' OR 組 = 'B';
↑の場合、「年が2」で「組が2」のデータか「組がB」のデータが出力されます。
算数で言う、掛けるや割るが足すや引くより先に計算するのと同じですね。
その算数と同じようにSQLもカッコで囲むことで、優先度を変えることが可能です。
SELECT * FROM 学生 WHERE 年 = 2 AND (組 = 'A' OR 組 = 'B');
↑の場合、「年が2」のデータか「組が2」または「組がB」のデータが出力されます。
最初は使い方に戸惑うかもしれませんが、自分なりに動かしてみてゆっくり学習して
いきましょう。