關系代數SQL實現
來源:程序員人生 發布時間:2015-05-22 07:52:24 閱讀次數:4892次
1、傳統的集合運算與SQL語句實現
傳統的集合運算包括4種運算:并(∪)、交(∩)、差(―)、廣義笛卡爾(X)。
并運算(Union)
對應的SQL語句:
Select * from R
Union Select * from S;
交運算(Intersect)
對應的SQL語句:
Select * from R Intersect Select * from S;
差運算(Except)
對應的SQL語句:
Select * from R Except Select * from S;
注意:對并、交與差元算,都要求關系R和關系S具有相同的目n,且相應的屬性取自同1個域。
笛卡爾積R×S運算(Extended Cartesian Product)
對應的SQL語句:
Select * from R,S;
2、專門的關系運算
專門的關系運算包括4種運算即選擇(σ)、投影(Π)、連接(∞)和除法(÷),
是關系數據庫數據保護、查詢、統計等操作的基礎。
選擇(Selection)
設有關系R,在關系R中求取滿足給定條件F的元組組成新的關系的運算稱為選擇。記作σF(R)。
其中F是1個條件表達式,其值為“真”或“假”。σF(R)是從關系R當選取使條件表達式F為真的元組。
對應的SQL語句:
SELECTR.學號,R.課程名,R.分數 from R
WHERE 分數>85
投影(Projection)
設有關系R,在關系R中求指定的若干個屬性列組成新的關系的運算稱作投影,記作ΠA(R),
其中A為欲選取的屬性列列名的列表。
對應的SQL語句:
若關系運算式為:П品名,數量(R)
SELECT 品名,數量 FROM R;
連接(Join)
從兩個分別為n,m目的關系R和S的廣義笛卡爾積當選取滿足給定條件F的元組組成新的關系稱為R和S的連接,記作R∞FS(F=AθB)。其中A和B分別為R和S上度數相等且可比的屬性列,θ是算術比較符(>,≥,<,≤,=,≠)。即連接運算就是從兩個關系的笛卡爾積當選取滿足1定連接條件的元組的集合,連接的結果是1個(k1+k2)元的關系。對應的SQL語句:
Select * from R,S where R.A=S.C;
除(Division)
給定關系R(x,y)與S(y)其中x,y為屬性集(也可為單屬性),R中的y和S中的y是同名的屬性(集)也能夠有不同的屬性名,
但必須出自相同的域集。在求解R÷S時,對R按x的值的分組,然后檢查每組,如某1組中的y包括S中全部的y,則取該組中的x的值作為關系P中的1個元組,否則不取。
R÷S的商等于關系P。對應于SQL語言:
SELECT DISTINCT A.Name FROM R AS A WHERE
NOT EXISTS
(SELECT * FROM S AS B WHERE
NOT EXISTS (SELECT * FROM R AS C where C.Name=A.Name and B.City=C.City))
GROUPBYA.Name
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------