您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)PostgreSQL中關(guān)系代數(shù)的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
關(guān)系代數(shù)是一種過程化查詢語言.它包括一個運算的集合,這些運算以一個或兩個關(guān)系為輸入,產(chǎn)生一個新的關(guān)系作為結(jié)果.關(guān)系代數(shù)是SQL查詢語言的數(shù)學(xué)基礎(chǔ).
關(guān)系代數(shù)的運算對象"關(guān)系"是一張二維表,由行和列組成,通俗地說,一個關(guān)系對應(yīng)一張表.
下面是本文所使用的關(guān)系:
單位信息T_DWXX
DWMC | DWBH | DWDZ |
---|---|---|
X有限公司 | 1001 | 廣東省廣州市荔灣區(qū) |
Y有限公司 | 1002 | 北京市海淀區(qū) |
Z有限公司 | 1003 | 廣西南寧市五象區(qū) |
個人信息T_GRXX
DWBH | GRBH | NL |
---|---|---|
1001 | 901 | 23 |
1002 | 902 | 33 |
1002 | 903 | 43 |
關(guān)系代數(shù)的基本運算有:
名稱 | 符號 | 讀音 |
---|---|---|
選擇(select) | σ | sigma |
投影(project) | π | pi |
并(union) | ∪ | |
差(set-difference) | - | |
笛卡爾積(cartesian-product) | × | |
重命名(rename) | ρ | rou |
選擇σ
定義:σφ(R)
選擇關(guān)系R中能夠滿足給定謂詞φ的元組(Tuple),將那些不滿足謂詞的元組剔除,組成一個新的關(guān)系.
如:
σDWBH='1001'(T_DWXX),選擇單位信息中,單位編號DWBH=1001的單位信息
σNL>40(T_GRXX),選擇個人信息中,年齡NL>40的個人信息
投影Π
定義:πa1,...,an(R)
使用投影關(guān)系來過濾出我們想要的屬性,投影關(guān)系返回一個僅含有這些屬性的關(guān)系.要注意的是,由于返回的是集合,所以會過濾重復(fù)的屬性值.
如:
πDWMC(T_DWXX),返回單位信息中的單位名稱列
并∪
定義:πa1,...,an(R)∪πa1,...,an(S)
把兩個關(guān)系中的內(nèi)容合并起來,或者一個關(guān)系經(jīng)過不同的查詢,把結(jié)果合并在一起。并運算處理的兩個關(guān)系須具有相同的屬性。
如:
πDWBH(T_DWXX)∪πDWBH(T_GRXX)
差-
定義:πa1,...,an(R) - πa1,...,an(S)
關(guān)系R差運算關(guān)系S,剩下R中有但S中沒有的元組組成的關(guān)系.必須保證-運算在相容的關(guān)系之間進行.
如:
πDWBH(T_DWXX) - πDWBH(T_GRXX)
笛卡爾積×
定義:R × S
關(guān)系的屬性卻各不相同,對于這種情況不能使用交并差運算,但又希望把兩個不相關(guān)的關(guān)系連接起來,可以通過笛卡兒乘積,用第一個關(guān)系R中每一個元組和第二個關(guān)系S中的所有元組結(jié)合,形成一個新的關(guān)系.
如:
T_DWXX × T_GRXX,得到T_DWXX和T_GRXX的笛卡爾積,共9行數(shù)據(jù)
重命名ρ
定義:ρnewname(R)
希望改變結(jié)果的名稱,可以通過ρ重命名,為一個關(guān)系起個新的名稱.
如:
ρDW1001σDWBH='1001'(T_DWXX),把DWBH='1001'的單位信息重命名為DW1001
其他常用運算包括:
名稱 | 符號 | 讀音 |
---|---|---|
交 | ∩ | |
賦值 | ← | |
自然連接 | ? | |
θ連接 | ? | thet |
半連接 | ?/? | |
外連接 | ?/?/? | |
聚集運算 | G |
交∩
定義:R ∩ S
在R和S兩個關(guān)系中都存在的元組的新關(guān)系。要求R和S兩個關(guān)系中的元組屬性相同。
如:
πDWBH(T_DWXX) ∩ πDWBH(T_GRXX)
賦值←
定義:R←S
使用箭頭左側(cè)的名字作為右邊關(guān)系的表示.
如:
DW←πDWBH(T_DWXX)
自然連接?
定義:R ? S
自然連接將兩個表中共同屬性值都相同的元組拼接在一起作為一個新的元組,而將剩下不能拼接的部分全部舍棄,得到一個新的關(guān)系。
如:
T_DWXX ? T_GRXX
θ連接
定義:R ?θ S
組合來自兩個關(guān)系R和S的元組,而組合條件不是簡單的共同屬性上的相等,需要一種一般形式的連接算子,這就是θ連接.與自然連接不同的是,相同的屬性只會出現(xiàn)一次
如:
T_DWXX ?DWBH > GRBH T_GRXX,單位編號DWBH大于個人編號GRBH的單位信息和個人信息的元組組合
半連接?/?
定義: R ? S / R ? S
與S/R在共同屬性上有相等值的所有R/S中的元組
如:
T_DWXX ? T_GRXX,與個人信息中DWBH一樣的單位信息
外連接?/?/?
定義: R ? S / R ? S / R ? S
左外連接的結(jié)果包含R中所有元組,對每個元組,若在S中在統(tǒng)統(tǒng)屬性上值相等的元組,則正常連接,否則保留R中的此元組,并將S中對應(yīng)的其他列設(shè)為NULL.右外連接/全外連接類似.
如:
T_DWXX ? T_GRXX,所有的單位信息,在個人信息不存在的單位,個人信息列值設(shè)置為NULL
聚集運算G
定義:Exp1,Exp2...Gfunc1,func2,...(R)
最大值/最小值/平均值/匯總/計數(shù)等.其中表達(dá)式Exp1...可選,G=MAX/MIN等
如:
DWMCGmax(DWBH)(T_DWXX),單位編號最大的單位名稱
SQL語句的運算表達(dá)式可以使用關(guān)系代數(shù)運算表示:
例一
-- SQL
SELECT c1,c2,...
FROM r1,r2,...
WHERE P
-- 關(guān)系代數(shù)
πc1,c2,...(σP(r1 × r2 × ...))
例二
-- SQL
SELECT c1,c2,...,max(c1)
FROM r1,r2,...
WHERE P
GROUP BY c1,c2,...
-- 關(guān)系代數(shù)
c1,c2,...Gmax(c1)(πc1,c2,...(σP(r1 × r2 × ...)))
感謝各位的閱讀!關(guān)于“PostgreSQL中關(guān)系代數(shù)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。