集合演算子の種類
集合演算子は、2つの集合(問合せ結果)の間で集合演算を行う演算子です。演算は行単位で行われ、その結果は1つの集合(問合せ結果)になります。集合演算子には、表1に示す4種類があります。
集合演算子 | 機能 | 戻り値 | 重複行の排除 | 結果のソート |
---|---|---|---|---|
UNION ALL | 和集合を求める | 2つの集合(問合せ結果)のすべての行 | しない | しない |
UNION | 和集合を求める | 2つの集合(問合せ結果)のすべての行 | する | する |
INTERSECT | 積集合を求める | 2つの集合(問合せ結果)に共通する行 | する | する |
MINUS | 差集合を求める | 2つの集合(問合せ結果)のうち、1つ目の集合(問合せ結果)にしかない行 | する | する |
次の図1は、各集合演算子で得られる結果のイメージです。
また、集合演算子の構文は次のとおりです。集合演算子には優先順位がなく、上から順に評価されます。ただし、括弧()
を使用すれば、評価の順序を変えることができます。
では、集合演算子の決まり事について、設問を解きながら解説しましょう。
問1
INTERSECT演算子について正しい記述はどれですか。
- a. デフォルトで出力はソートされない
- b. 重複をチェックするときにNULLは無視される
- c. すべてのSELECT文において、列名は同じでなければならない
- d. すべてのSELECT文において、列数は同じでなければならない
- e. すべてのSELECT文において、列のデータ型は完全に同じでなければならない
表1で説明したとおり、デフォルトで出力はソートされないのはUNION ALL
のみで、他の集合演算子はソートされます(選択肢aは不正解)。
集合演算子は、NULL
も含めて重複チェックを行います。つまり、NULL
は無視しません(選択肢bは不正解)。
すべてのSELECT
文において、列数は同じでなければいけませんが、列名とデータ型は異なっていても構いません(選択肢dは正解、選択肢c、eは不正解)。ただし、データ型は互換性がなければいけません。