データベース
平成26年度 春期 基本情報技術者試験 午前 問28
“商品”表,“在庫”表に対する次の 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 商品.商品番号 = 在庫.商品番号)
出典:平成26年度 春期 基本情報技術者試験 午前 問28
答えと解説を見る
正解:エ
覚える知識
SQLのNOT INとNOT EXISTSの等価性
NOT INによる非存在判定は、商品番号を結び付ける相関副問合せのNOT EXISTSと等価である。
この問題で必要なこと
商品のうち在庫表に存在しない商品番号を求めるNOT INは、相関副問合せを使うNOT EXISTSで書き換えられる。
ひっかけ
相関条件のないEXISTS/NOT EXISTSは副問合せが常に真偽一定になり、また在庫表を主問合せにすると結果の対象が逆になる。
この知識の出題:本試験系 2 回・免除試験 6 回(公開問題での観測値)