SQLの集合演算子。3つの図解を用いて初心者向けに解説

今回は、SQLの代表的な集合演算子[UNION][EXCEPT][INTERSECT]について、それぞれの概要を初心者向けに解説します。

集合演算子は、RDBMSの基本概念であるテーブル構造の検索結果同士を1つの結果にまとめるために使われます。ただし、元々、違うテーブルからの検索結果同士のため、重複するデータが含まれている場合の扱いなど、用途に応じて考えなければなりません。

この記事では、SQLの集合演算子について、ベン図と呼ばれる集合の関係を表す図を用いて説明します。

目次

SQLの集合演算子の基本

SQLの集合演算子は、2つの異なるテーブルからの検索結果を1つにまとめるときに使います。

集合の条件

集合演算子を使って1つにまとめるためには、2つの検索結果のデータ構造が一致していなければなりません。具体的には、それぞれの検索結果の列数とデータ型が完全に一致していることが集合の条件となります。

集合のイメージ

補足ですが、あくまでも列数とデータ型の完全一致が求められるのは、検索結果に対してです。

列数等が異なるテーブル同士でも、SELECT〜WHEREの検索結果で列数とデータ型が一致していれば、集合演算子を使って1つにまとめることができます。

SQLの集合演算子について

SQLの代表的な集合演算子は、[UNION]、[EXCEPT]、[INTERSECT]の3つです。この章では、それぞれの集合演算子の概要について説明します。

UNION(和集合)

まずは、集合演算子の中でも最もシンプルかつ代表的な[UNION]です。UNIONは和集合の仕組みの集合演算子で、2つの検索結果を単純にまとめます。

集合後の検索結果には、下記のデータがすべて存在します。

  1. Aテーブルからの検索結果だけにあるデータ
  2. Bテーブルからの検索結果にだけあるデータ
  3. Aテーブル、Bテーブル両方の検索結果にあるデータ
UNION(和集合)のベン図
和集合の重複

UNION(和集合)の結果、重複するデータがある場合には、その重複データを1行にまとめるか、それぞれ抽出するかについては、SQL文で操作することができます。

EXCEPT(差集合)

次に[EXCEPT]です。EXCEPTは差集合の仕組みの集合演算子で、1つ目の検索結果を元に、2つ目の検索結果に存在するデータを差し引いたものが集合結果となります。

つまり、EXCEPT(差集合)の結果は1つ目の検索結果のみに存在するデータのみが残ります。たとえば、今月新規で発生した費目などを抽出するときに使います。

EXCEPT(差集合)のベン図

INTERSECT(積集合)

最後に、[INTERSECT]です。INTERSECTは積集合の仕組みの集合演算子で、1つ目の検索結果と2つ目の検索結果に存在する共通データのみが集合結果となります。

INTERSECT(積集合)のベン図

あとがき

今回は、SQLの集合演算子の概要について、それぞれのベン図を用いて説明しました。

当記事では概要のみの説明となりますが、実際のSQL文や実例については、別記事で説明します。まずは、集合演算子の基本となる3つのパターンについて、イメージを正確に理解しておきましょう。

目次