修了試験 2024-07-28実施分 基本情報技術者試験 問20
“商品”表,“在庫”表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。 ここで,(主キー)を付けた項目は主キーを表す。 SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫) 商品:|商品番号(主キー)|商品名|単価/在庫:|倉庫番号(主キー)|商品番号(主キー)|在庫数
正答4
解説
正解は4です。 NOT IN を使った副問合せと同じ結果を、EXISTS を使って書き換える問題です。 SQL(Structured Query Language)の元の文は、“在庫”表に1行も現れない商品番号を“商品”表から取り出します。 つまり「在庫のない商品」の商品番号を求めています。 【選択肢別解説】 1:× 副問合せが外側の表と結び付いていないため、“商品”表に1行でもあれば EXISTS は常に真になります。 その結果、“在庫”表の商品番号がすべて出力され、「在庫のある商品」を求めることになります。 2:× 副問合せが外側の表と結び付いていないため、“商品”表に1行でもあれば NOT EXISTS は常に偽になります。 結果は空となり、元のSQL文とは一致しません。 3:× 相関副問合せで、同じ商品番号の行が“在庫”表に存在する商品を取り出します。 「在庫のある商品」を求めることになり、元のSQL文と逆の結果です。 4:○ “商品”表の各行について、同じ商品番号の行が“在庫”表に存在しないときだけ取り出します。 「在庫のない商品」となり、元のSQL文と同じ結果が得られます。 【ポイント】 副問合せの中で外側の表の列を参照するものを、相関副問合せといいます。 NOT IN は、相関副問合せを使った NOT EXISTS で書き換えられることを押さえます。まとめて解く
修了試験 2024-07-28実施分を通しで解く(60問)→