a. データ操作
b. 集合演算
【 和 】
2 つの表のどちらかにある行を取り出す。
表R
|
+
|
表S
列A |
列B |
AAA |
001 |
CCC |
003 |
DDD |
004 |
|
→
|
表T
列A |
列B |
AAA |
001 |
BBB |
002 |
CCC |
003 |
DDD |
004 |
|
【 差 】
片方の表から別の表にある行を取り除く。
【 積 】
2 つの表のどちらにもある行を取り出す。
【 直積 】
複数の表において、両者に存在するすべてのデータのすべての組み合わせをいいます。
そのため、実行結果は、複数の表の行数を掛け合わせたものとなります。
表R
|
×
|
表S
|
→
|
表T
列A |
列B |
列C |
AAA |
001 |
あ |
AAA |
002 |
い |
AAA |
003 |
う |
BBB |
001 |
あ |
BBB |
002 |
い |
BBB |
003 |
う |
|
c. 関係演算
【 選択 】
指定した行を抜き出す演算です。
ある表R から指定された行を取り出して、新しい表R’を作成する操作を、選択といいます。
これをSQLで表現すると、以下のようになります。
SELECT R.A, R.B
FROM R
WHERE R.A = 'BBB'
【 射影 】
指定した列を抜き出す演算です。
ある表R から指定された列を取り出して、新しい表R’を作成する操作を、射影といいます。
これをSQLで表現すると、以下のようになります。
SELECT R.A
FROM R
【 結合 】
複数の表を結びつける演算です。
ある2つの表R, S から指定された行を取り出して、新しい表Tを作成する操作を、結合といいます。
表R
|
表S
|
→
|
表T
列A |
列B |
列C |
AAA |
001 |
あ |
BBB |
002 |
い | |
上の図では、(表Rの列B) = (表Sの列B) という条件で結合操作を行なっています。 表Sの{'003', 'う'}という行は表Rに該当するデータがないため結合されず、表Tでは現れません。
これをSQLで表現すると、以下のようになります。
SELECT R.A, R.B, S.C
FROM R, S
WHERE R.B = S.B
【 商 】
表Tと表Sとの直積が表Rに必ず含まれるような表Tをいう。
表R
列A |
列B |
AAA |
001 |
BBB |
002 |
BBB |
003 |
CCC |
004 |
EEE |
002 |
FFF |
002 |
FFF |
003 | |
表S
|
→
|
表T
|
商は、直積と差集合で求めることができる。