積(表の集合演算)をやさしく解説!SQLのINTERSECTを初心者向けに学ぶ
生徒
「先生、“積”という言葉が表の集合演算で出てきました。算数の掛け算と同じ意味ですか?」
先生
「いい質問ですね。積(セキ)は、算数の掛け算ではなく、集合の共通部分を表す操作です。SQL(エスキューエル)ではINTERSECT(インターセクト)という命令で使います。」
生徒
「共通部分というと、2つの表で同じデータだけを取り出すイメージですか?」
先生
「その通りです。例えば、社員表と顧客表に両方登録されている人の名前だけを抽出するときに積を使います。」
1. 積(セキ)とは?
積(セキ)は、表の集合演算(ヒョウノシュウゴウエンザン)のひとつで、2つの表の両方に存在する共通のデータだけを取り出す操作です。数学の集合論でいう“積集合(セキシュウゴウ)”にあたり、共通部分を求めるイメージです。
2. SQLのINTERSECT(インターセクト)の基本
SQLでは、積を求めるためにINTERSECTを使います。これは、2つのSELECT文の結果を比較し、両方に含まれる行だけを抽出する命令です。
SELECT 名前 FROM 社員
INTERSECT
SELECT 名前 FROM 顧客;
この例では、社員表と顧客表の両方に登録されている人の名前だけが表示されます。
3. INTERSECTを使うときの注意点
INTERSECTを利用するときにはいくつかのルールがあります。
- 比較するSELECT文の列数が同じである必要がある。
- 列ごとのデータ型も一致していなければならない。
- 列の順番も合わせておくことが重要。
例えば、社員表の「名前」と顧客表の「住所」をそのままINTERSECTで比べることはできません。どちらも同じ項目を選んで比較する必要があります。
4. 積の具体的な利用例
積を使うと便利な場面をいくつか紹介します。
- 社員表と研修受講者表から、研修に参加した社員だけを抽出する。
- 顧客表と注文表から、実際に注文をした顧客だけを取り出す。
- 会員表とイベント参加表から、会員でかつ参加した人をリストアップする。
このように積を使えば、共通する対象だけを効率よく抽出することができます。
5. 積と数学の集合との関係
数学で学ぶ集合の積集合は「AとBの両方に含まれる要素」を意味します。データベースにおける積も同じで、表Aと表Bの共通する行だけを残して新しい表を作ります。これにより、無駄なく必要なデータだけを取り出すことができます。
6. 積の歴史的背景
積という考え方は、1970年代に提唱された関係データベース理論(カンケイデータベースリロン)に基づいています。この理論を提唱したエドガー・F・コッド(エドガーエフコッド)は、データを数学的な集合として扱うことを提案しました。その考えが今のSQLに反映され、INTERSECTという命令が使われるようになったのです。