關系代數(Relation Algebra)與SQL語句的對應關系


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= 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM