問題

SQLにおける集合演算に関する記述として、適切なものはどれか。

ア)UNIONは、二つの問合せ結果の共通行のみを取り出す演算である。

イ)UNION ALLは、二つの問合せ結果を結合する際に、重複行を自動的に除去する演算である。

ウ)INTERSECTは、二つの問合せ結果の両方に共通して存在する行を取り出す演算である。

エ)EXCEPTは、二つの問合せ結果を単純に連結し、重複の有無にかかわらずすべての行を保持する演算である。

解答・解説を見る

正解: ウ)

解説:

  • ア)二つの問合せ結果の和集合(重複行を除いた統合)を取るのはUNIONです。「共通行のみ」を取り出すのはINTERSECTの説明であり、誤りです。
  • イ)UNION ALLは、重複行を除去せずにそのまま結合する演算です。重複行を除去するのは(ALLを付けない)UNIONの役割であり、記述が逆になっているため誤りです。
  • ウ)INTERSECTは、二つの問合せ結果の積集合、すなわち両方に共通して存在する行のみを取り出す演算です。正解です。
  • エ)二つの問合せ結果を単純に連結しすべての行を保持するのはUNION ALLの説明です。EXCEPTは一方の結果から他方に存在する行を除いた差集合を取る演算であり、記述が異なるため誤りです。

重要キーワード

用語説明
UNION二つの問合せ結果の和集合。重複行は除去される
UNION ALL二つの問合せ結果を重複除去せず連結する演算
INTERSECT二つの問合せ結果の積集合(共通行)を取る演算
EXCEPT一方から他方に存在する行を除いた差集合を取る演算