SQL語句的執行一般是先翻譯為關系代數再被執行的(能有效提高執行速度),所以我們有必要
了解關系代數與SQL語句間的對應關系。
就像高中代數由+-*/和數字組成,關系代數是由union、intersection、join等運算符和關系實例
組成的。
關系代數有五個基礎運算符,這五個基礎運算符能派生出其他組合運算符。它們分別是:
選擇(σ, selection)、投影(π, projection)、叉乘(x, cross-product)、
差(-, set-difference)和並(υ, union)
它們和SQL語句的對應關系為:
選擇(σ, selection)相當於SQL語句中的where,表示選出滿足一定條件的行。
如:σ rating>8 (S2)相當於 select * from S2 where rating>8;
投影(π, projection)相當於SQL語句中的select。。。distinct, 表示選擇哪些列。注意:投影是會去重的!
如:π sname,rating (σ rating>8 (S2))相當於 select sname, rating from S2 where rating>8;
叉乘(x, cross-product)相當於SQL語句中的from,表示窮舉所有集合兩邊元素的組合量
如: AxB 相當於 select * from A, B; 注意:叉乘時兩個集合不能有重名列
差(-, set-difference)R-S返回所有在R中而不在S中的元組
並(υ, union)RυS返回包含在R中或在S中的所有元組
注意:並、交、差都要求兩個關系實例是並相容的。 並相容指:1. 兩個關系實例字段數相同 2. 對應字段類型、取值范圍相同
合成運算符:
合成運算符是由基礎運算符組合派生而來的,算是一種速記標志。
交(∩, intersection) R∩S返回既在R中又在S中的元組。
自然連接(⋈, natural join)相當於先做叉乘,再選擇公共屬性一樣的關系實例。如果沒有公共屬性的話,那么結果就是叉乘
除(÷, division)r÷s, 返回r中包含與s共有列但其他列不同的關系實例。
例如:

r的上下藍色和金黃色部分包含s,而中間橙色部分僅部分包含s,白色部分完全不包含s,所以r÷s= 
