【SQLの基礎知識⑪】 条件(WHERE句)を付けた問合せ

SQLの基礎知識
この記事は約5分で読めます。
スポンサーリンク

条件を指定するWHERE句

表から、いつもすべての行を読み出す必要はありません。SELECT文では、必要な列を指定することができますが、データの中から条件に合致するものだけを読み出したいこともあります。これを実現するのが条件を付けた検索です。

条件を付けた検索には、WHERE句を用います。WHERE句を含んだ問合せの書式は次のようになります。

書式 SELECT <列名> FROM <表名> WHERE <検索条件>

WHERE句は後ろに検索条件を指定します。検索条件には条件を表す式を記述し、その条件に合致した行が問合せの結果として出力されます。式には、=演算子などの比較演算子を使います。

【SQLの基礎知識⑤】 SQLにおける比較演算子の基本
この章では、SQLの問合せにおける条件式の記述方法を習得できます。解説文だけでなく、具体的・実践的なSQL文と実行結果を確認することで、理解を深めることができます。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。

ここでは、次の「商品マスタ」表を使って解説していきます。

表:商品マスタ

商品名カテゴリ仕入先単価
燃えない灯油アイデア商品空想科学社1200
燃える水アイデア商品空想科学社1500
穴のあいた財布非実用商品財布堂8000
毛のない毛筆非実用商品奇想.inc700
座る板がない椅子非実用商品奇想.inc6000
答え付き答案実用商品カンニング社9800
火星語辞典実用商品カンニング社1800

まずは、「商品マスタ」表から、カテゴリの値が「実用商品」のデータだけを読み出してみましょう。

SQL文
SELECT * FROM 商品マスタ WHERE カテゴリ='実用商品';

実行結果

商品名カテゴリ仕入先単価
答え付き答案実用商品カンニング社9800
火星語辞典実用商品カンニング社1800
「カテゴリ」列はデータ型が文字列型になるので、比較する式の条件は「’」(シングルクォート)で囲んでいます。列のデータ型が数値型の場合には、次のようにシングルクォートで囲む必要はありません。
SQL文
SELECT * FROM 商品マスタ WHERE 単価 > 2000 ;

実行結果

商品名カテゴリ仕入先単価
穴のあいた財布非実用商品財布堂8000
座る板がない椅子非実用商品奇想.inc6000
答え付き答案実用商品カンニング社9800
このSQL文では、数値型の「単価」列が「2000」以上の商品を検索しています。SQLの記述では、検索条件に使う列のデータ型に気を付けて指定してください。

複合条件で問合せ

検索に使う条件は、1つだけでなく複数を指定することができます。

複数の条件を指定するときには、考えなくてはならないことがあります。それは、複数の条件の関係が「共に満たす」のか「どちらかの条件を満たす」のかといった点です。要するに複数の条件を指定するときには、指定された条件のすべての条件を満たすのか、どれか1つを満たすのかを指定する必要があります。この指定にはこちらで解説している論理演算子を使います。

【SQLの基礎知識⑥】 SQLにおける論理演算子の基本
SQLの問合せにおける複数の条件式の記述方法を習得できます。書式・ルールなどの解説をした上で、具体的・実践的なSQL文と実行結果を確認しながら、理解を深めることができます。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。

まずは、AND演算子で複合条件のお問合せを行った例を見てみましょう。

SQL文
SELECT * FROM 商品マスタ WHERE カテゴリ='非実用商品' AND 単価 > 1000;

実行結果

商品名カテゴリ仕入先単価
穴のあいた財布非実用商品財布堂8000
座る板がない椅子非実用商品奇想.inc6000

この結果を見てわかるように、AND演算子を使うことで、「カテゴリ」列が「非実用商品」で、「単価」列が「1000以上」の両方の条件に合致するデータが出力されています。

また条件は2つだけでなく、それ以上の条件を設定することも可能でえす。上記のSQL文にさらにもう1つ条件を追加してみましょう。「仕入先」列が「財布堂」であるという条件を追加すると、次のような結果になります。

SQL文
SELECT * FROM 商品マスタ
WHERE カテゴリ='非実用商品' AND 単価 > 1000 AND 仕入先='財布堂';

実行結果

商品名カテゴリ仕入先単価
穴のあいた財布非実用商品財布堂8000

今度は、指定した条件のどれか1つだけでも合致すればよいという指定に使う、OR演算子を使ってみましょう。

SQL文
SELECT * FROM 商品マスタ
WHERE カテゴリ='非実用商品' OR カテゴリ='アイデア商品';
実行結果

商品名カテゴリ仕入先単価
燃えない灯油アイデア商品空想科学社1200
燃える水アイデア商品空想科学社1500
穴のあいた財布非実用商品財布堂8000
毛のない毛筆非実用商品奇想.inc700
座る板がない椅子非実用商品奇想.inc6000

このように、どちらかの条件に合致したものはすべて問合せ結果として出力されています。

また、AND演算子とOR演算子の両方を同時に使うこともできます。このときの演算子の優先順位は、論理演算子のこちらで解説しているように、記述順に演算が行われます。記述順を変えずに優先順位を変更したい場合は、優先する条件式を「( )」で囲むようにしてください。

関連リンク

次の章へ進む
【SQLの基礎知識⑫】 結果を並び替える(ORDER BY句)
結果の並べ替え(ORDER BY句)の基本を習得できます。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。
目次
【SQLの基礎知識】基本ルールや基礎の基礎をマスターしよう
こちらの記事を読み進めることで、SQLの基礎が充分に身に付きます。これからSQLを身に着けたい初心者・入門者の方に最適です。データベース製品ごとに表現方法が異なることがありますので、ある程度SQLのスキルがある方も利用できるサイトです。

タイトルとURLをコピーしました