データベース
平成22年度 春期 基本情報技術者試験 午前 問31
“商品”表,“在庫”表に対する次のSQL文と,同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。
SELECT 商品番号 FROM 商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)
商品(商品番号,商品名,単価)主キー: 商品番号
在庫(在庫番号,商品番号,在庫数)主キー: 在庫番号
- ア SELECT 商品番号 FROM 在庫 WHERE EXISTS (SELECT 商品番号 FROM 商品)
- イ SELECT 商品番号 FROM 在庫 WHERE NOT EXISTS (SELECT 商品番号 FROM 商品)
- ウ SELECT 商品番号 FROM 商品 WHERE EXISTS (SELECT 商品番号 FROM 在庫 WHERE 商品.商品番号 = 在庫.商品番号)
- エ SELECT 商品番号 FROM 商品 WHERE NOT EXISTS (SELECT 商品番号 FROM 在庫 WHERE 商品.商品番号 = 在庫.商品番号)
出典:平成22年度 春期 基本情報技術者試験 午前 問31
答えと解説を見る
正解:エ
覚える知識
SQLのNOT INとNOT EXISTSの等価性
NOT EXISTSは、相関条件を満たす行が副問合せに存在しない行を返し、NOT INと同等の結果を得る。
この問題で必要なこと
NOT IN (副問合せ) は、相関副問合せを用いたNOT EXISTSと同じ結果になる。条件として商品.商品番号=在庫.商品番号を副問合せに付ける。
ひっかけ
相関条件がないEXISTS/NOT EXISTSは全件に対し同じ結果となり、意図と異なる。
この知識の出題:本試験系 2 回・免除試験 6 回(公開問題での観測値)