RDBMS:集合演算と結合

テーブルの足し算と引き算

2つ以上のテーブルを使う場合のSQL文を学ぶ。テーブルのレコード同士を足したり引いたりするのが集合演算子。次の集合演算子についてまとめる。

  • UNION:テーブルの足し算
  • INTERSECT:テーブルの共通部部分の選択
  • EXCEPT:レコードの引き算

次のテーブルに対して色々操作してみる。 image.png

UNION:テーブルの足し算

UNIONはテーブルの『和集合』をとる。ベン図で示すと次の通り。 image.png

コマンドはSELECT文をUNIONでつなげてあげると和集合になる。

image.png

ポイントとしては、集合演算子ではデフォルトだと重複行は排除される。排除しない場合は、ALLオプションをつける。

image.png

INETRSECT:テーブルのAND

INTERSECTはテーブルの『積集合』をとる。ベン図で示すと次の通り。 image.png

コマンドはUNIONと同様。

image.png

EXCEPT:レコードの引き算

EXCEPTはテーブルの『差集合』をとる。ベン図で示すと次の通り。ポイントはどちらから引くかにより結果が異なるという点。 image

コマンドはUNIONと同様。

image.png

テーブルを列方向に連結する

結合(JOIN)は別テーブルから列を持ってきて、列同士を結合する集合演算。UNIONが行方向の結合で、JOINは列方向の結合。

結合の基本は次の3つ。

  • 内部結合:INNER JOIN
  • 外部結合:OUTER JOIN
  • クロス結合:CROSS JOIN

次のテーブルに対して色々操作してみる。

image.png

2つのテーブルのキーワードを比較すると次のようになっている。

キーワード名 Shohin TenpoShohin
商品ID
商品名
商品分類
販売単価
仕入単価
登録日
店舗ID
店舗名
数量

結合を使って、それぞれのテーブルのデータを使って欲しいデータ形式にする。

内部結合

内部結合はテーブルの内部だけから情報を持ってくるため内部と言われる。

内部結合を実行すると下記のような感じになる。

image.png

外部結合

外部結合は、元のテーブルにない情報を(テーブル外部から)結果に持ってくるという意味で、外部結合と言われる。

外部結合を実行すると下記のような感じになる。

image.png

クロス結合

クロス結合は、結合するテーブル同士の直積(2つのテーブルのレコードについて、全ての組み合わせを作る結合)。あまり実務で使うことはないらしいが、内部結合はクロス結合の一部。逆に外部結合はクロス結合でない部分も持つ。

参考