表の集合演算とは?初心者向けに解説|データベースの基本をしっかり理解
生徒
「先生、データベースの勉強をしていたら“表の集合演算”という言葉が出てきました。これはどういう意味なんですか?」
先生
「表の集合演算(ヒョウノシュウゴウエンザン)とは、複数の表を組み合わせたり、共通部分を取り出したり、差を求めたりする操作のことです。数学の集合と同じ考え方をデータベースに応用しているんですよ。」
生徒
「なるほど!つまり表を集合とみなして、和や交差を計算するイメージなんですね。」
先生
「その通りです。SQL(エスキューエル)では、UNION(ユニオン)、INTERSECT(インターセクト)、EXCEPT(エクセプト)といったキーワードで実現します。」
1. 表の集合演算とは?
表の集合演算とは、2つ以上の表を使って新しい表を作る操作のことです。数学における集合の演算と考え方が同じで、共通部分や全体を扱います。データベースにおいては、SQLを用いて異なる表のデータをまとめたり比較したりできます。
2. UNION(ユニオン)|和集合
UNION(ユニオン)は、2つの表を結合して、すべての行をまとめて表示する集合演算です。重複行は自動的に取り除かれます。
SELECT 名前 FROM 社員
UNION
SELECT 名前 FROM 顧客;
この例では、社員と顧客の両方の「名前」を1つの結果として表示します。重複するデータは1回だけ出力されます。
3. UNION ALL(ユニオンオール)|重複を含めた和集合
UNION ALLはUNIONと違い、重複をそのまま残して結合します。集計や件数を正確に知りたい場合に役立ちます。
SELECT 名前 FROM 社員
UNION ALL
SELECT 名前 FROM 顧客;
4. INTERSECT(インターセクト)|積集合
INTERSECTは、2つの表に共通して含まれるデータだけを抽出します。
SELECT 名前 FROM 社員
INTERSECT
SELECT 名前 FROM 顧客;
この場合、社員であり顧客でもある人の名前だけが表示されます。
5. EXCEPT(エクセプト)|差集合
EXCEPTは、片方の表にはあるが、もう片方には存在しないデータを抽出します。
SELECT 名前 FROM 社員
EXCEPT
SELECT 名前 FROM 顧客;
このSQLでは「社員に登録されているが顧客にはいない人」の名前が表示されます。
6. 表の集合演算の注意点
表の集合演算を行うには、結合する表の列数や列のデータ型が一致している必要があります。例えば「名前」と「部署」を選択している表と、「売上金額」と「商品名」を選択している表をUNIONすることはできません。同じ形のデータを扱うことが大前提です。
7. 集合演算と実務での利用シーン
表の集合演算は実務で幅広く使われます。
- 社員とアルバイトの名簿をまとめて一覧化する(UNION)。
- 顧客と会員リストの両方に載っている人を探す(INTERSECT)。
- 退職者リストから現役社員を除外する(EXCEPT)。
このように、集合演算は日常的なデータ管理や業務システムの構築で役立ちます。
8. 表の集合演算の歴史的背景
集合演算の考え方は、1970年代に登場した関係モデル(カンケイモデル)に基づいています。エドガー・F・コッド(エドガーエフコッド)が提唱した理論では、データは数学的な集合として扱えるとされました。その結果、UNIONやINTERSECTといった集合演算がSQLに取り入れられ、現代のデータベースに欠かせない機能として定着しました。