データ操作(全55問中15問目)

"商品"表,"在庫"表に対する次のSQL文と,同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。
28.gif

出典:平成26年春期 問28

  • 28a.gif
  • 28i.gif
  • 28u.gif
  • 28e.gif
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データ操作
まず設問のSQL文ですが、(SELECT 商品番号 FROM 在庫)の副問合せで"在庫"表の商品番号列に存在する値のリストを作成し、それを"商品"表の商品番号列と比較しています。比較演算子はNOT INなので、"商品"表の商品番号列の中で、"在庫"表の商品番号列に存在しない商品番号のリストが得られます。
28_1.gif
EXISTSは、親表の行を1行ずつ処理し、続く相関副問合せによって返された結果行が1つ以上存在すれば真、1つもなければ偽を返す句です。INとEXISTSは異なる意味ですが、使い方を工夫することで同じ結果を返すことが可能です。
  • "在庫"表の商品番号のうち、"商品"表の商品番号列の値として存在する行が得られます。上記の例でいえば、商品番号{101, 105, 102, 104}が返されます。
  • "在庫"表の商品番号のうち、"商品"表の商品番号列の値として存在しない行が得られます。上記の例でいえば、"結果なし"が返されます。
  • 副問合せは、現在処理中の"商品"表の商品番号が、"在庫"表の商品番号として存在する場合に1行以上を返します。"EXISTS = 真"となる行は、両表に含まれる商品番号になります。上記の例でいえば、商品番号{101, 102, 104, 105}が返されます。
  • 正しい。副問合せは、現在の"商品"表の商品番号が"在庫"表の商品番号として存在する場合に1行以上を返します。"NOT EXISTS = 真"となる行は、"商品"表に商品番号があるが、"在庫"表にはその商品番号がない行になります。上記の例でいえば、商品番号{103, 106}が返されます。

この問題の出題歴


Pagetop