RDB(関係データベース)の基本操作として、射影、選択、結合に関しては、「RDBとSQL」で学習しました。ここでは、それらの基本となる関係代数(Relational Algebra)の代表的な演算について学習します。
関係代数、和、差、積、結合、直積、商
型適合とは、図のようにAとBの列数、列名、データ型が一致していることです。
A、Bの少なくとも一方にある行(重複した行は一方だけ)を取り込み、一つの表にします。
重複の判定は行全体で行うので、例えば "宇野次郎" の[学部コード]が異なれば、重複ではなく、二つの "宇野次郎" が取り込まれます。
SELECT 学籍番号, 氏名 FROM A
UNION
SELECT 学籍番号, 氏名 FROM B
ORDER BY 番号;
Aから、Bにある行を削除します。いいかえれば、AにあってBにないものを取り出します。
SELECT 学籍番号, 氏名 FROM A
MINIS
SELECT 学籍番号, 氏名 FROM B;
「共通」「交わり」ともいいます。A、Bの両方にある行を取り出します。
A∩B=A-(A-B) の関係があります。
SELECT 学籍番号, 氏名 FROM A
INTRSECT
SELECT 学籍番号, 氏名 FROM B;
「RDBとSQL」での結合操作と同じです。結合演算には多くの種類があり、それを区分するときには自然結合といいます。
「交差結合」「デカルト積」ともいいます。Aの各行とCの各行を組み合わせた表になります。
結果の表は、列数=Aの列数+Cの列数、行数=Aの行数×Cの行数 になります。
SELECT * FROM A
CROSS JOIN C;
D÷Aとは、A×C=DとなるCを求める演算です。
SQLでは対応した命令は存在しません。