令和2年秋期試験問題 午前Ⅱ 問7

表Rと表Sに対し,SQL文を実行して結果を得るとき,aに入れる字句はどれか。ここで,結果のNULLは値が存在しないことを表す。
07_1.gif
〔SQL文〕
07_2.gif

  • COALESCE
  • DISTINCT
  • NULLIF
  • UNIQUE
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データ操作
解説
「R FULL JOIN S ON R.ID = S.ID」のFULL JOIN(FULL OUTER JOIN)は完全外部結合を表します。LEFT OUTER JOIN と RIGHT OUTER JOIN を組み合わせた結合演算と考えるといいでしょう。

「R FULL JOIN S ON R.ID = S.ID」で結合すると、R側のID列の値がS側のID列に存在しない場合、そのR側レコードに対応するS側レコードの各列はNULLで埋められます。他方で、S側のID列の値がR側のID列に存在しない場合、そのS側レコードに対応するR側レコードの各列はNULLで埋められます。よって、テーブル結合時、R.IDの値が1の行はS.名称2がNULL、S.IDが4の行はR.名称1がNULLとなります。
07_3.gif
この中間結果の表から、〔結果〕のID列(1,2,3,4)を得るためのaを考えます。
  • 正しい。COALESCEは引数を最初から1つずつ走査し、NULLでない値が見つかった場合にその値を返します。COALESCE(A, B)はAがNULLのときBを返し、そうでないときAを返すので、IDが1の列の値としてR.IDが採用され、IDが4のの列の値としてS.IDが採用されます。後は名称1と名称2がそのまま表示すれば、〔結果〕のデータが得られます。
  • DISTINCTは引数をとらないので誤りです。
  • NULLIF(A, B)はAとBが等しいときにNULLを返し、そうでないときAを返します。もし、aがNULLIFであったら、〔結果〕のID列の値が2,3,4の部分はNULLになるはずなので誤りです。
  • UNIQUEはSELECT文では使用しません。

Pagetop