令和5年度 秋期 データベーススペシャリスト試験 午前II 問10

テクノロジデータベース

この問題は2023(R5)秋 データベーススペシャリスト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

表Aと表Bから,どちらか一方にだけ含まれるIDを得るSQL文の a に入れる字句はどれか。

表Aと表B
図の説明テキスト

表Aと表Bの2つの表が横に並んでいる。

表A:

ID
100
200
300
400

表B:

ID
200
400
600
800
SQL 文
図の説明テキスト

〔SQL 文〕

SELECT COALESCE(A.ID, B.ID)
  FROM A <span id="q10_blank_a" class="blank-label">a</span> B ON A.ID = B.ID
  WHERE A.ID IS NULL OR B.ID IS NULL

解答・解説を読む

正解: 選択肢

表Aと表Bから、「どちらか一方にだけ含まれるID」を得るためには、両方の表のすべてのデータを対象としつつ、結合条件に一致しないデータも抽出できる結合方法を用いる必要があります。これを実現するのが FULL OUTER JOIN(完全外部結合) です。

FULL OUTER JOINを使用すると、表Aにのみ存在する行と表Bにのみ存在する行の両方が抽出され、相手の表に存在しない列の値は NULL となります。その後、WHERE 句などで NULL となっている行を抽出することで、どちらか一方にだけ含まれるIDを得ることができます。

各選択肢の解説

  • ア: FULL OUTER JOIN
    正解です。左右両方の表のすべての行を抽出し、一致しない行は NULL で補完するため、両方の表において片方にしか存在しないデータを取得する目的に合致します。
  • イ: INNER JOIN
    内部結合です。両方の表に 共通して存在する(一致する) データのみを抽出するため、どちらか一方にだけ含まれるデータは取得できません。
  • ウ: LEFT OUTER JOIN
    左外部結合です。左側の表(表A)のすべての行と、右側の表(表B)で結合条件に一致する行を抽出します。表Bにのみ存在するデータは取得できません。
  • エ: RIGHT OUTER JOIN
    右外部結合です。右側の表(表B)のすべての行と、左側の表(表A)で結合条件に一致する行を抽出します。表Aにのみ存在するデータは取得できません。