検索条件の設定
SELECT文でデータを取得する時に、検索条件を設定し取得するデータを選択する方法を確認します。書式は次の通りです。
SELECT カラム名 , ... FROM テーブル名 WHERE 条件式;
WHERE句の後に記述した条件式に適合したデータだけを取得します。
条件式は様々な記述の方法が用意されています。まずここでは等しいかどうかや大小の比較を行う方法を確認します。
比較演算子を使った条件式
条件式の中で使用できる比較演算子は次の通りです。
| 演算子 | 使用例 | 意味 |
|---|---|---|
| = | a = b | a と b は等しい |
| <> | a <> b | a と b は等しくない |
| > | a > b | a は b より大きい |
| >= | a >= b | a は b 以上 |
| < | a < b | a は b より小さい |
| <= | a <= b | a は b 以下 |
※ 「=」演算子の代わりに「==」演算子も使用できます。「<>」演算子の代わりに「!=」演算子も使用できます。
比較演算子は演算子の左辺と右辺を比較します。例えば左辺にカラム名を記述し右辺に比較の対象となる値を記述します。そして記述した演算子の種類に応じて左辺と右辺が等しいかどうか、または大きいか小さいかなどを評価して結果としてTRUEかFALSEを返します。
テーブルのデータを先頭から最後まで1行ずつ取り出し、条件式にあてはめてTRUEが返される時はそのデータを取得します。FALSEだった場合にはデータを取得しません。
具体的には次のようになります。
create table customer(id integer, name text, address text); select * from customer where address = '東京'; select * from customer where id > 5;
最初のSELECT文では「address」カラムの値が'東京'の場合にデータを取得します。2番目のSELECT文では「id」カラムの値が5よりも大きい場合にデータを取得します。
論理演算子を使った条件式
一つの条件だけであれば比較演算子を使って記述することができますが、複数の条件を組み合わせた条件式を記述するには論理演算子と組み合わせて条件式を記述します。
条件式の中で使用できる論理演算子は次の通りです。
| 演算子 | 使用例 | 意味 |
|---|---|---|
| AND | a AND b | a と b が共にTRUEの時にtru |
| OR | a OR b | a か b の少なくとも一つがTRUEの場合にTRUE |
| NOT | NOT a | a がTRUEならFALSE、a がFALSEならTRUE |
論理演算子は条件式と条件式を組み合わせる時にしようします。ANDの場合は左辺の条件式と右辺の条件式が共にTRUEの場合だけ全体がTRUEとなります。ORの場合は左辺または右辺の少なくとも一つがTRUEの場合に全体がTRUEとなります。NOTはその後に続く条件式の結果を反転させます。
具体的には次のようになります。
create table customer(id integer, old integer, address text); select * from customer where old < 20 and address = '東京'; select * from customer where address = '東京' or address = '大阪'; select * from customer where not address = '東京';
最初のSELECT文では「old」カラムの値が20よりも大きく、且つ「address」カラムの値が'東京'の場合にデータを取得します。2番目のSELECT文では「address」カラムの値が'東京'、または「address」カラムの値が'大阪'の場合にデータを取得します。3番目のSELECT文では「address」カラムの値が'東京'のデータ以外の場合にデータを取得します。
サンプル
では実際に試してみます。
次のようなデータが格納されたテーブルを対象にします。
「address」カラムの値が'東京'のデータだけを取得してみます。
select * from customer where address = '東京';
今度は「old」カラムの値が20以上のデータだけを取得してみます。
select * from customer where old >= 20;
最後に「address」カラムの値が'東京'で、且つ「old」カラムの値が20より小さいデータだけを取得してみます。
select * from customer where address = '東京' and old < 20;
このようにWHERE句を使うことで取得するデータを条件に一致するものだけにすることができます。