修了試験 2011-07-24実施分 基本情報技術者試験 問34
“商品”表,“在庫”表に対する次のSQL文と,同じ結果が得られるSQL文はどれか。 ここで,下線部は主キーを表す。 SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫) 商品表/_商品番号_|商品名|単価 在庫表/_在庫番号_|商品番号|在庫数
正答4
解説
正解は4です。 NOT INを使った副問合せと同じ結果になるSQL文を選ぶ問題です。 元のSQL文は、在庫表に一度も現れない商品番号を商品表から取り出します。 つまり「在庫の登録がない商品」を求めています。 【選択肢別解説】 1:× 在庫表から商品番号を取り出し、商品表に1行でもあれば全行を返します。 在庫表にある商品番号が得られるので、求める結果とは逆です。 2:× 商品表に1行でも行があればNOT EXISTSは偽になり、結果は空になります。 在庫の登録がない商品は得られません。 3:× 商品表の各行について、同じ商品番号が在庫表にある場合に取り出します。 在庫の登録がある商品が得られるので、求める結果とは逆です。 4:○ 商品表の各行について、同じ商品番号が在庫表に存在しない場合に取り出します。 在庫表に現れない商品番号を求めるので、元のSQL文と同じ結果になります。 【ポイント】 「NOT IN(副問合せ)」は、相関副問合せを使った「NOT EXISTS」に書き換えられます。 相関副問合せでは、外側の表の列を内側のWHERE句で参照する点が要点です。まとめて解く
修了試験 2011-07-24実施分を通しで解く(80問)→