5.2.6 特定データの探索
表中のデータを条件付きで操作するには,探索条件を指定します。探索条件とは行の選択条件のことで,「一定の範囲のデータ」や「ナル値でないデータ」などの条件があります。これらの条件を論理演算子を使用して複数組み合わせることもできます。特定データの探索方法とSQLの指定例を次に示します。
- 〈この項の構成〉
(1) 特定データの探索方法
表中のデータの探索には次に示す方法があります。
-
特定範囲内のデータの探索
-
特定の文字パターンの探索
-
ナル値でないデータの探索
-
複数の条件を満たすデータの探索
-
副問合せを使用した検索
(2) 特定データの探索のSQL指定例
(a) 特定範囲内のデータを探索するSQLの指定例
特定範囲内のデータを探索する方法には次に示す三つの方法があります。
-
比較述語(等価,大小比較のために使用します)
-
BETWEEN述語(一定の範囲のデータを取り出すときに使用します)
-
IN述語(指定した複数の値と一致するデータだけ取り出すときに使用します)
ここでは,比較述語を使用したデータの探索の例を説明します。
- (例)
-
在庫表(ZAIKO)から,在庫量(ZSURYO)が50以下の,商品コード(SCODE)と商品名(SNAME)を検索するSELECT文の例を次に示します。
SELECT SCODE,SNAME FROM ZAIKO WHERE ZSURYO<=50
(b) 特定の文字パターンを探索するSQLの指定例
ここでは,特定の文字パターンを含む列がある行の探索の例を説明します。
- (例)
-
LIKE述語を使用します。在庫表(ZAIKO)から商品コード(SCODE)の2文字目がLの商品名(SNAME)と在庫量(ZSURYO)を検索するSELECT文の例を次に示します。
SELECT SNAME,ZSURYO FROM ZAIKO WHERE SCODE LIKE '_L%'
(c) ナル値でないデータを探索するSQLの指定例
ここでは,表の列中にナル値が含まれない行の探索の例を説明します。
- (例)
-
NULL述語のNOTを組み合わせて使用します。在庫表(ZAIKO)から商品名(SNAME)が未設定(ナル値)ではない商品コード(SCODE)を検索するSELECT文の例を次に示します。
SELECT SCODE FROM ZAIKO WHERE SNAME IS NOT NULL
(d) 複数の条件を満たすデータを探索するSQLの指定例
ここでは,複数の条件を組み合わせて,該当するデータを含む行の探索の例を説明します。
- (例)
-
論理演算子(AND,OR,NOT)を使用します。在庫表(ZAIKO)から商品名(SNAME)がブラウス又はポロシャツで,在庫量(ZSURYO)が50以上の商品の商品コード(SCODE)と在庫量を検索するSELECT文の例を次に示します。
SELECT SCODE,ZSURYO FROM ZAIKO WHERE (SNAME=N'ブラウス' OR SNAME=N'ポロシャツ') AND ZSURYO=>50
(e) 副問合せを使用した探索のSQLの指定例
探索結果をSELECT文の条件の中に指定して,より複雑な問い合わせを記述できます。これを副問合せといいます。副問合せには次に示す二つの方法があります。
-
副問合せの結果が,指定した比較条件を満たしているかどうかを判定し,副問合せの結果の範囲を絞り込むときに限定述語を使用します。
-
副問合せの結果が空集合でないかどうかを判定するときに使用します。
ここでは,限定述語を使用した副問合せを使用した探索の例を説明します。
- (例)
-
限定述語を使用した場合として,在庫表(ZAIKO)からブラウスのどの在庫量(ZSURYO)よりも多く在庫がある商品の商品コード(SCODE)と商品名(SNAME)を検索するSELECT文の例を次に示します。
SELECT SCODE,SNAME FROM ZAIKO WHERE ZSURYO>ALL (SELECT ZSURYO FROM ZAIKO WHERE SNAME=N'ブラウス')