數(shù)據(jù)庫系統(tǒng)概論(第四版)-王珊-薩師煊-chp2-2_第1頁
數(shù)據(jù)庫系統(tǒng)概論(第四版)-王珊-薩師煊-chp2-2_第2頁
數(shù)據(jù)庫系統(tǒng)概論(第四版)-王珊-薩師煊-chp2-2_第3頁
數(shù)據(jù)庫系統(tǒng)概論(第四版)-王珊-薩師煊-chp2-2_第4頁
數(shù)據(jù)庫系統(tǒng)概論(第四版)-王珊-薩師煊-chp2-2_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)庫系統(tǒng)概論AnIntroductiontoDatabaseSystem第二章關(guān)系數(shù)據(jù)庫(續(xù))第二章關(guān)系數(shù)據(jù)庫2.1關(guān)系模型概述2.2關(guān)系數(shù)據(jù)結(jié)構(gòu)2.3關(guān)系的完整性2.4關(guān)系代數(shù)2.5關(guān)系演算2.6小結(jié)2.4

關(guān)系代數(shù)

概述傳統(tǒng)的集合運(yùn)算專門的關(guān)系運(yùn)算集合運(yùn)算符∪-∩×并差交笛卡爾積比較運(yùn)算符>≥<≤=<>大于大于等于小于小于等于等于不等于運(yùn)算符含義運(yùn)算符含義表2.4關(guān)系代數(shù)運(yùn)算符

概述專門的關(guān)系運(yùn)算符σπ

÷選擇投影連接除邏輯運(yùn)算符∧∨非與或運(yùn)算符含義運(yùn)算符含義表2.4關(guān)系代數(shù)運(yùn)算符(續(xù))

概述(續(xù))2.4

關(guān)系代數(shù)

概述

傳統(tǒng)的集合運(yùn)算

專門的關(guān)系運(yùn)算1.并(Union)R和S具有相同的目n(即兩個(gè)關(guān)系都有n個(gè)屬性)相應(yīng)的屬性取自同一個(gè)域R∪S

仍為n目關(guān)系,由屬于R或?qū)儆赟的元組組成

R∪S={t|t

R∨t

S}并(續(xù))2.差(Difference)R和S具有相同的目n相應(yīng)的屬性取自同一個(gè)域R-S

仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成

R-S={t|tR∧tS}差(續(xù))3.交(Intersection)R和S具有相同的目n相應(yīng)的屬性取自同一個(gè)域R∩S仍為n目關(guān)系,由既屬于R又屬于S的元組組成

R∩S={t|t

R∧t

S} R∩S=R–(R-S)交(續(xù))4.笛卡爾積(CartesianProduct)嚴(yán)格地講應(yīng)該是廣義的笛卡爾積(ExtendedCartesianProduct)R:n目關(guān)系,k1個(gè)元組S:m目關(guān)系,k2個(gè)元組R×S

列:(n+m)列元組的集合元組的前n列是關(guān)系R的一個(gè)元組后m列是關(guān)系S的一個(gè)元組行:k1×k2個(gè)元組R×S={tr

ts|tr

R∧tsS}交(續(xù))2.4

關(guān)系代數(shù)概述傳統(tǒng)的集合運(yùn)算專門的關(guān)系運(yùn)算2.4.2專門的關(guān)系運(yùn)算先引入幾個(gè)記號(hào)(1)R,tR,t[Ai]

設(shè)關(guān)系模式為R(A1,A2,…,An)

它的一個(gè)關(guān)系設(shè)為R

tR表示t是R的一個(gè)元組

t[Ai]則表示元組t中相應(yīng)于屬性Ai的一個(gè)分量

專門的關(guān)系運(yùn)算(續(xù))(2)A,t[A],A

若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,則A稱為屬性列或?qū)傩越M。

t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元組t在屬性列A上諸分量的集合。

A則表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的屬性組。

專門的關(guān)系運(yùn)算(續(xù))(3)tr

tsR為n目關(guān)系,S為m目關(guān)系。

tr

R,tsS,tr

ts稱為元組的連接。

tr

ts是一個(gè)n+m列的元組,前n個(gè)分量為R中的一個(gè)n元組,后m個(gè)分量為S中的一個(gè)m元組。專門的關(guān)系運(yùn)算(續(xù))(4)象集Zx

給定一個(gè)關(guān)系R(X,Z),X和Z為屬性組。當(dāng)t[X]=x時(shí),x在R中的象集(ImagesSet)為:

Zx={t[Z]|t

R,t[X]=x}

它表示R中屬性組X上值為x的諸元組在Z上分量的集合專門的關(guān)系運(yùn)算(續(xù))x1在R中的象集

Zx1

={Z1,Z2,Z3},x2在R中的象集

Zx2

={Z2,Z3},x3在R中的象集

Zx3={Z1,Z3}象集舉例

專門的關(guān)系運(yùn)算(續(xù))選擇投影連接除專門的關(guān)系運(yùn)算(續(xù))(a)

Student4)學(xué)生-課程數(shù)據(jù)庫:

學(xué)生關(guān)系Student、課程關(guān)系Course和選修關(guān)系SC學(xué)號(hào)Sno姓名Sname性別Ssex年齡Sage所在系Sdept200215121李勇男20CS200215122劉晨女19IS200215123王敏女18MA200215125張立男19IS專門的關(guān)系運(yùn)算(續(xù))課程號(hào)Cno課程名Cname先行課Cpno學(xué)分Ccredit1數(shù)據(jù)庫542數(shù)學(xué)23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理27PASCAL語言64Course(b)專門的關(guān)系運(yùn)算(續(xù))

(c)SC學(xué)號(hào)Sno課程號(hào)Cno成績Grade2002151211922002151212852002151213882002151222902002151223801.選擇(Selection)1)選擇又稱為限制(Restriction)2)選擇運(yùn)算符的含義在關(guān)系R中選擇滿足給定條件的諸元組

σF(R)={t|tR∧F(t)='真'}F:選擇條件,是一個(gè)邏輯表達(dá)式,基本形式為:

X1θY1選擇(續(xù))3)選擇運(yùn)算是從關(guān)系R中選取使邏輯表達(dá)式F為真的元組,是從行的角度進(jìn)行的運(yùn)算σ選擇(續(xù))[例1]查詢信息系(IS系)全體學(xué)生

σSdept

='IS'(Student)

σ5='IS'(Student)

結(jié)果:SnoSnameSsexSageSdept200215122劉晨女19IS200215125張立男19IS選擇(續(xù))[例2]查詢年齡小于20歲的學(xué)生

σSage<20(Student)

或σ4<20(Student)

結(jié)果:

SnoSnameSsexSageSdept200215122劉晨女19IS200215123王敏女18MA200215125張立男19IS2.投影(Projection)1)投影運(yùn)算符的含義從R中選擇出若干屬性列組成新的關(guān)系

πA(R)={t[A]|tR} A:R中的屬性列

2.投影(Projection)2)投影操作主要是從列的角度進(jìn)行運(yùn)算但投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組(避免重復(fù)行)π投影(續(xù))[例3]查詢學(xué)生的姓名和所在系即求Student關(guān)系上學(xué)生姓名和所在系兩個(gè)屬性上的投影

πSname,Sdept(Student)

或π2,5(Student)結(jié)果:投影(續(xù))SnameSdept李勇CS劉晨IS王敏MA張立IS投影(續(xù))[例4]查詢學(xué)生關(guān)系Student中都有哪些系

πSdept(Student)

結(jié)果:SdeptCSISMA3.連接(Join)1)連接也稱為θ連接2)連接運(yùn)算的含義從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組

RS={|tr

R∧ts

S∧tr[A]θts[B]}A和B:分別為R和S上度數(shù)相等且可比的屬性組θ:比較運(yùn)算符

連接運(yùn)算從R和S的廣義笛卡爾積R×S中選?。≧關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組

AθBtrts

連接(續(xù))3)兩類常用連接運(yùn)算等值連接(equijoin)什么是等值連接θ為“=”的連接運(yùn)算稱為等值連接

等值連接的含義從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:

RS={|tr

R∧tsS∧tr[A]=ts[B]}A=Btrts

連接(續(xù))自然連接(Naturaljoin)

自然連接是一種特殊的等值連接兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組在結(jié)果中把重復(fù)的屬性列去掉自然連接的含義

R和S具有相同的屬性組B

R

S={|trR∧tsS∧tr[B]=ts[B]}trts連接(續(xù))4)一般的連接操作是從行的角度進(jìn)行運(yùn)算。

自然連接還需要取消重復(fù)列,所以是同時(shí)從行和列的角度進(jìn)行運(yùn)算。

AθBRS連接(續(xù))[例5]關(guān)系R和關(guān)系S

如下所示:連接(續(xù))一般連接RS的結(jié)果如下:

C<E連接(續(xù))

等值連接R

S的結(jié)果如下:R.B=S.B

連接(續(xù))

自然連接R

S的結(jié)果如下:

連接(續(xù))外連接如果把舍棄的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(Null),這種連接就叫做外連接(OUTERJOIN)。左外連接如果只把左邊關(guān)系R中要舍棄的元組保留就叫做左外連接(LEFTOUTERJOIN或LEFTJOIN)右外連接如果只把右邊關(guān)系S中要舍棄的元組保留就叫做右外連接(RIGHTOUTERJOIN或RIGHTJOIN)。連接(續(xù))下圖是例5中關(guān)系R和關(guān)系S的外連接

連接(續(xù))圖(b)是例5中關(guān)系R和關(guān)系S的左外連接,圖(c)是右外連接

4.除(Division)給定關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運(yùn)算得到一個(gè)新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合,記作:

R÷S={tr[X]|tr

R∧πY(S)

Yx}Yx:x在R中的象集,x=tr[X]除(續(xù))2)除操作是同時(shí)從行和列角度進(jìn)行運(yùn)算

÷RS除(續(xù))[例6]設(shè)關(guān)系R、S分別為下圖的(a)和(b),R÷S的結(jié)果為圖(c)

分析在關(guān)系R中,A可以取四個(gè)值{a1,a2,a3,a4}

a1的象集為{(b1,c2),(b2,c3),(b2,c1)}a2的象集為{(b3,c7),(b2,c3)}a3的象集為{(b4,c6)}a4的象集為{(b6,c6)}S在(B,C)上的投影為

{(b1,c2),(b2,c1),(b2,c3)}只有a1的象集包含了S在(B,C)屬性組上的投影所以R÷S={a1}5.綜合舉例以學(xué)生-課程數(shù)據(jù)庫為例(P56)[例7]查詢至少選修1號(hào)課程和3號(hào)課程的學(xué)生號(hào)碼

首先建立一個(gè)臨時(shí)關(guān)系K:

然后求:πSno,Cno(SC)÷K

Cno

1

3綜合舉例(續(xù))例7續(xù)

πSno,Cno(SC)

200215121象集{1,2,3} 200215122象集{2,3}K={1,3}

于是:πSno,Cno(SC)÷K={200215121}SnoCno20021512112002151212200215121320021512222002151223綜合舉例(續(xù))[例8]查詢選修了2號(hào)課程的學(xué)生的學(xué)號(hào)。

πSno(σCno='2'(SC))={200215121,200215122}

綜合舉例(續(xù))[例9]查詢至少選修了一門其直接先行課為5號(hào)課程的的學(xué)生姓名

πSname(σCpno='5'(CourseSCStudent))或

πSname(σCpno='5'(Course)SCπSno,Sname(Student))或πSname

(πSno

(σCpno='5'(Course)SC)

πSno,Sname

(Student))

綜合舉例(續(xù))[例10]查詢選修了全部課程的學(xué)生號(hào)碼和姓名。

πSno,Cno(SC)÷πCno(Course)πSno,Sname(Student)

練習(xí)關(guān)系模式集Account(account_number,branch_name,balance)Branch(

branch_name,branch_city,assets)Customer(customer_name,customer_street,customer_city)Deposits(customer_name,account_number)Loan(loan_number,branch_name,amount)Borrows(customer_name,loan_number)account_number(賬號(hào))branch-name(開戶支行名稱)balance(余額)A101市中支行5000A215舜耕支行7000A102經(jīng)七路支行4000A305解放支行3500A201棧橋支行9000A202鐵路支行7000A217棧橋支行7500Account(賬戶)關(guān)系branch_name(支行名稱)branch_city(支行所在地)assets(資產(chǎn)額)棧橋支行青島7100000市中支行青島9000000舜耕支行濟(jì)南400000北園支行泰安3700000經(jīng)七路支行濟(jì)南1700000和平支行濟(jì)寧300000鐵路支行棗莊100000解放支行濟(jì)南8000000Branch(支行)關(guān)系customer_name(客戶名)customer_street(客戶所在街道)customer_city(客戶所在城市)李勇迎春路威海錢小平市府前街青島吳賓北大街泰安張愛國濼源大街東營張力經(jīng)緯路煙臺(tái)劉晨滿庭芳路淄博王敏泗水路棗莊趙維滿庭芳路淄博孫大慶珍珠塔路威海劉偉北大街泰安于童漱玉路煙臺(tái)劉建風(fēng)箏路濰坊customer_name(客戶名)account_number(賬號(hào))劉晨A102王敏A101王敏A201趙維A217孫大慶A202劉偉A215于童A305Deposits(儲(chǔ)蓄)關(guān)系Customer(客戶)關(guān)系loan_number(貸款號(hào))branch_name(支行名稱)amount(金額)L-11解放支行9000L-14市中支行15000L-15經(jīng)七路支行15000L-16經(jīng)七路支行13000L-17市中支行10000L-23鐵路支行20000L-93舜耕支行5000Loan(貸款)關(guān)系customer_name(客戶名)loan_number(貸款號(hào))李勇L-16吳賓L-93劉晨L-15林志偉L-14趙維L-17劉偉L-11劉偉L-23劉建L-17Borrows(借貸)關(guān)系例如,1.選擇貸款額大于12000元并由經(jīng)七路支行發(fā)放的貸款

2.查詢Loan關(guān)系中所有貸款號(hào)及其金額。3.找出所有在銀行有賬戶而無貸款的客戶

4.要找出所有在經(jīng)七路支行有貸款的客戶姓名。

5.找出居住在淄博并在銀行中有賬戶的客戶的開戶支行名稱

6.查找在青島所有支行都有賬戶的客戶名稱。例如,選擇貸款額大于12000元并由經(jīng)七路支行發(fā)放的貸款

branch_name='經(jīng)七路支行'∧

amount>12000(Loan)loan_number(貸款號(hào))branch_name(支行名稱)amount(金額)L-15經(jīng)七路支行15000L-16經(jīng)七路支行13000例如,查詢Loan關(guān)系中所有貸款號(hào)及其金額。πl(wèi)oan_number,amount(Loan)loan_number(貸款號(hào))amount(金額)L-119000L-1415000L-1515000L-1613000L-1710000L-2320000L-935000例如,找出所有在銀行有賬戶而無貸款的客戶

πcustomer_name(Deposits)-πcustomer_name(Borrows)Customer_name王敏孫大慶于童例如:要找出所有在經(jīng)七路支行有貸款的客戶姓名。

πcustomer_name(Borrows.loan_number=Loan.loan_number(branch_name='經(jīng)七路支行'(Borrows×Loan)))customer_name李勇劉晨找出居住在淄博并在銀行中有賬戶的客戶的開戶支行名稱

πbranch_name

(customer_city

=‘淄博’(CustomerAccountDeposits))查找在青島所有支行都有賬戶的客戶名稱。πcustomer_name,branch_name(Deposits

Account)÷πbranch_name(branch_city="青島"(Branch))

branch_name(支行名稱)branch_city(支行所在地)assets(資產(chǎn)額)棧橋支行青島7100000市中支行青島9000000舜耕支行濟(jì)南400000北園支行泰安3700000經(jīng)七路支行濟(jì)南1700000和平支行濟(jì)寧300000鐵路支行棗莊100000解放支行濟(jì)南8000000πbranch_name(branch_city=“青島”(Branch))branch_name(支行名稱)棧橋支行市中支行πcustomer_name,branch_name(DepositsAccount)customer_namebranch_name劉晨經(jīng)七路支行王敏市中支行王敏棧橋支行趙維棧橋支行孫大慶和平支行劉偉舜耕支行于童解放支行customer_name可以取六個(gè)值{劉晨、王敏、趙維、孫大慶、劉偉、于童}

劉晨的象集為{經(jīng)七路支行}

王敏的象集為{市中支行,棧橋支行}

趙維的象集為{棧橋支行}

孫大慶的象集為{和平支行}劉偉的象集為{舜耕支行}于童的象集為{解放支行}πbranch_name(branch_city=“青島”(Branch))

{棧橋支行,市中支行}只有王敏的象集包含了{(lán)棧橋支行,市中支行}所以πcustomer_name,branch_name(Deposits

Account)÷πbranch_name(branch_city=“青島”(Branch))={王敏}小結(jié)

關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)運(yùn)算 并、差、交、笛卡爾積、投影、選擇、連接、除 基本運(yùn)算 并、差、笛卡爾積、投影、選擇 交、連接、除 可以用5種基本運(yùn)算來表達(dá)引進(jìn)它們并不增加語言的能力,但可以簡化表達(dá)小結(jié)(續(xù))關(guān)系代數(shù)表達(dá)式關(guān)系代數(shù)運(yùn)算經(jīng)有限次復(fù)合后形成的式子典型關(guān)系代數(shù)語言ISBL(InformationSystemBaseLanguage)由IBMUnitedKingdom研究中心研制用于PRTV(PeterleeRelationalTestVehicle)實(shí)驗(yàn)系統(tǒng)第二章關(guān)系數(shù)據(jù)庫2.1關(guān)系模型概述2.2關(guān)系數(shù)據(jù)結(jié)構(gòu)2.3關(guān)系的完整性2.4關(guān)系代數(shù)2.5關(guān)系演算2.6小結(jié)2.5關(guān)系演算關(guān)系演算以數(shù)理邏輯中的謂詞演算為基礎(chǔ)按謂詞變元不同進(jìn)行分類1.元組關(guān)系演算:以元組變量作為謂詞變元的基本對象元組關(guān)系演算語言ALPHA2.域關(guān)系演算:以域變量作為謂詞變元的基本對象域關(guān)系演算語言QBE2.5.1元組關(guān)系演算語言ALPHA由E.F.Codd提出INGRES所用的QUEL語言是參照ALPHA語言研制的語句檢索語句GET更新語句PUT,HOLD,UPDATE,DELETE,DROP一、檢索操作

語句格式:

GET

工作空間名

[(定額)](表達(dá)式1)

[:操作條件][DOWN/UP表達(dá)式2]

定額:規(guī)定檢索的元組個(gè)數(shù)格式:數(shù)字表達(dá)式1:指定語句的操作對象格式:關(guān)系名|關(guān)系名.屬性名|元組變量.屬性名|集函數(shù)[,…]操作條件:將操作結(jié)果限定在滿足條件的元組中格式:邏輯表達(dá)式表達(dá)式2:指定排序方式格式:關(guān)系名.屬性名|元組變量.屬性名[,…]一、檢索操作

(1)簡單檢索

GET

工作空間名(表達(dá)式1)[例1]查詢所有被選修的課程號(hào)碼。

GETW(SC.Cno)

[例2]查詢所有學(xué)生的數(shù)據(jù)。

GETW(Student)(2)限定的檢索格式

GET

工作空間名(表達(dá)式1):操作條件[例3]查詢信息系(IS)中年齡小于20歲的學(xué)生的學(xué)號(hào)和年齡

GETW(Student.Sno,Student.Sage):

Student.Sdept='IS'∧Student.Sage<20(3)帶排序的檢索格式

GET

工作空間名(表達(dá)式1)[:操作條件]DOWN/UP表達(dá)式2

[例4]查詢計(jì)算機(jī)科學(xué)系(CS)學(xué)生的學(xué)號(hào)、年齡,結(jié)果按年齡降序排序

GETW(Student.Sno,Student.Sage):

Student.Sdept='CS‘DOWN

Student.Sage(4)帶定額的檢索

格式

GET

工作空間名(定額)(表達(dá)式1)

[:操作條件][DOWN/UP

表達(dá)式2][例5]取出一個(gè)信息系學(xué)生的學(xué)號(hào)。

GETW(1)(Student.Sno):

Student.Sdept='IS'

[例6]查詢信息系年齡最大的三個(gè)學(xué)生的學(xué)號(hào)及其年齡,結(jié)果按年齡降序排序。

GETW(3)(Student.Sno,Student.Sage):

Student.Sdept='IS'DOWNStudent.Sage(5)用元組變量的檢索元組變量的含義表示可以在某一關(guān)系范圍內(nèi)變化(也稱為范圍變量RangeVariable)元組變量的用途①簡化關(guān)系名:設(shè)一個(gè)較短名字的元組變量來代替較長的關(guān)系名。②操作條件中使用量詞時(shí)必須用元組變量。定義元組變量格式:RANGE關(guān)系名變量名一個(gè)關(guān)系可以設(shè)多個(gè)元組變量

(6)用存在量詞的檢索操作條件中使用量詞時(shí)必須用元組變量

[例8]查詢選修2號(hào)課程的學(xué)生名字。

RANGESCX

GETW(Student.Sname):X(X.Sno=Student.Sno∧X.Cno='2')[例9]查詢選修了這樣課程的學(xué)生學(xué)號(hào),其直接先行課是6號(hào)課程。

RANGECourseCXGETW(SC.Sno):

CX(CX.Cno=SC.Cno∧CX.Pcno='6')

用存在量詞的檢索(續(xù))[例10]查詢至少選修一門其先行課為6號(hào)課程的學(xué)生名字

RANGECourseCXSCSCX GETW(Student.Sname):SCX(SCX.Sno=Student.Sno∧

CX(CX.Cno=SCX.Cno∧CX.Pcno='6'))

前束范式形式:

GETW(Student.Sname):

SCXCX(SCX.Sno=Student.Sno∧

CX.Cno=SCX.Cno∧CX.Pcno='6')(7)帶有多個(gè)關(guān)系的表達(dá)式的檢索

[例11]查詢成績?yōu)?0分以上的學(xué)生名字與課程名字。

RANGESCSCXGETW(Student.Sname,Course.Cname):

SCX(SCX.Grade≥90∧

SCX.Sno=Student.Sno∧

Course.Cno=SCX.Cno)(8)用全稱量詞的檢索

[例12]查詢不選1號(hào)課程的學(xué)生名字

RANGESCSCXGETW(Student.Sname):SCX(SCX.Sno≠Student.Sno∨SCX.Cno≠'1')用存在量詞表示:

RANGESCSCXGETW(Student.Sname):SCX(SCX.Sno=Student.Sno∧SCX.Cno='1')(9)用兩種量詞的檢索[例13]查詢選修了全部課程的學(xué)生姓名。

RANGECourseCXSCSCXGETW(Student.Sname):CXSCX(SCX.Sno=Student.Sno∧

SCX.Cno=CX.Cno)(10)用蘊(yùn)函(Implication)的檢索

[例14]查詢最少選修了200215122學(xué)生所選課程的學(xué)生學(xué)號(hào)

RANGECouseCXSCSCXSCSCYGETW(Student.Sno):CX(SCX(SCX.Sno=‘200215122'∧SCX.Cno=CX.Cno) SCY(SCY.Sno=Student.Sno∧ SCY.Cno=CX.Cno))(11)聚集函數(shù)

常用聚集函數(shù)(Aggregationfunction)或內(nèi)部函數(shù)(Build-infunction)關(guān)系演算中的聚集函數(shù)

函數(shù)名功能COUNT對元組計(jì)數(shù)TOTAL求總和MAX求最大值MIN求最小值A(chǔ)VG求平均值聚集函數(shù)(續(xù))[例15]查詢學(xué)生所在系的數(shù)目。

GETW(COUNT(Student.Sdept))COUNT函數(shù)在計(jì)數(shù)時(shí)會(huì)自動(dòng)排除重復(fù)值。

[例16]查詢信息系學(xué)生的平均年齡

GETW(AVG(Student.Sage):

Student.Sdept='IS’)二、更新操作(1)修改操作(2)插入操作(3)刪除操作(1)修改操作步驟①用HOLD語句將要修改的元組從數(shù)據(jù)庫中讀到工作空間中HOLD

工作空間名(表達(dá)式1)[:操作條件]HOLD語句是帶上并發(fā)控制的GET語句②用宿主語言修改工作空間中元組的屬性③用UPDATE語句將修改后的元組送回?cái)?shù)據(jù)庫中

UPDATE

工作空間名修改操作(續(xù))[例17]把200215121學(xué)生從計(jì)算機(jī)科學(xué)系轉(zhuǎn)到信息系。

HOLDW(Student.Sno,Student.Sdetp):

Student.Sno=‘200215121'

(從Student關(guān)系中讀出95007學(xué)生的數(shù)據(jù))

MOVE'IS'TOW.Sdept

(用宿主語言進(jìn)行修改)

UPDATEW

(把修改后的元組送回Student關(guān)系)(2)插入操作步驟①用宿主語言在工作空間中建立新元組②用PUT語句把該元組存入指定關(guān)系中

PUT

工作空間名(關(guān)系名)

PUT語句只對一個(gè)關(guān)系操作,關(guān)系演算中的聚集函數(shù)

插入操作(續(xù))[例18]學(xué)校新開設(shè)了一門2學(xué)分的課程“計(jì)算機(jī)組織與結(jié)構(gòu)”,其課程號(hào)為8,直接先行課為6號(hào)課程。插入該課程元組

MOVE'8'TOW.CnoMOVE'計(jì)算機(jī)組織與結(jié)構(gòu)'TOW.CnameMOVE'6'TOW.CpnoMOVE'2'TOW.Ccredit

PUTW(Course)(3)刪除操作步驟①用HOLD語句把要?jiǎng)h除的元組從數(shù)據(jù)庫中讀到工作空間中②用DELETE語句刪除該元組

DELETE

工作空間名刪除操作(續(xù))[例19]200215125學(xué)生因故退學(xué),刪除該學(xué)生元組

HOLDW(Student):Student.Sno=‘200215125'DELETEW

刪除操作(續(xù))[例20]將學(xué)號(hào)200215121改為200215126HOLDW(Student):Student.Sno=‘200215121'

DELETEWMOVE‘200215126'TOW.SnoMOVE'李勇'TOW.SnameMOVE'男'TOW.SsexMOVE'20‘TOW.SageMOVE'CS'TOW.Sdept

PUTW(Student)

刪除操作(續(xù))[例21]刪除全部學(xué)生

HOLDW(Student)DELETEW

為保證參照完整性,刪除Student中元組時(shí)相應(yīng)地要?jiǎng)h除SC中的元組

HOLDW(SC)DELETEW

小結(jié):元組關(guān)系演算語言ALPHA檢索操作GETGET

工作空間名

[(定額)](表達(dá)式1)

[:操作條件][DOWN/UP表達(dá)式2]插入操作建立新元組--PUT修改操作HOLD--修改--UPDATE刪除操作HOLD--DELETE2.5關(guān)系演算2.5.1元組關(guān)系演算語言ALPHA2.5.2域關(guān)系演算語言QBE2.5.2域關(guān)系演算語言QBE

一種典型的域關(guān)系演算語言 由M.M.Zloof提出以元組變量的分量即域變量作為謂詞變元的基本對象QBE:QueryByExample基于屏幕表格的查詢語言查詢要求:以填寫表格的方式構(gòu)造查詢用示例元素(域變量)來表示查詢結(jié)果可能的情況查詢結(jié)果:以表格形式顯示QBE操作框架

關(guān)系名屬性名操作命令元組屬性值或查詢條件或操作命令一、檢索操作1.簡單查詢[例1]求信息系全體學(xué)生的姓名操作步驟為:(1)用戶提出要求;(2)屏幕顯示空白表格;簡單查詢(續(xù))(3)用戶在最左邊一欄輸入要查詢的關(guān)系名Student;(4)系統(tǒng)顯示該關(guān)系的屬性名

StudentStudentSnoSnameSsexSageSdept簡單查詢(續(xù))(5)用戶在上面構(gòu)造查詢要求李勇是示例元素,即域變量(6)屏幕顯示查詢結(jié)果StudentSnoSnameSsexSageSdeptP.李勇ISStudentSnoSnameSsexSageSdept李勇張立IS構(gòu)造查詢的幾個(gè)要素示例元素即域變量一定要加下劃線示例元素是這個(gè)域中可能的一個(gè)值,它不必是查詢結(jié)果中的元素打印操作符P.

實(shí)際上是顯示查詢條件可使用比較運(yùn)算符>,≥,<,≤,=和≠其中=可以省略簡單查詢(續(xù))[例2]查詢?nèi)w學(xué)生的全部數(shù)據(jù)StudentSnoSnameSsexSageSdeptP.200215121P.李勇P.男P.20P.CS簡單查詢(續(xù))

顯示全部數(shù)據(jù)也可以簡單地把P.操作符作用在關(guān)系名上。

StudentSnoSnameSsexSageSdeptP.2.條件查詢

[例3]求年齡大于19歲的學(xué)生的學(xué)號(hào)StudentSnoSnameSsexSageSdeptP.200215121>19條件查詢(與條件)[例4]求計(jì)算機(jī)科學(xué)系年齡大于19歲的學(xué)生的學(xué)號(hào)。方法(1):把兩個(gè)條件寫在同一行上StudentSnoSnameSsexSageSdeptP.200215121>19CS條件查詢(與條件)

方法(2):把兩個(gè)條件寫在不同行上,但使用相同的示例元素值StudentSnoSnameSsexSageSdeptP.200215121P.200215121>19CS條件查詢(與條件)[例5]查詢既選修了1號(hào)課程又選修了2號(hào)課程的學(xué)生的學(xué)號(hào)。ScSnoCnoGradeP.200215121P.20021512112條件查詢(或條件)[例6]查詢計(jì)算機(jī)科學(xué)系或者年齡大于19歲的學(xué)生的學(xué)號(hào)。StudentSnoSnameSsexSageSdeptP.200215121P.200215122>19CS條件查詢(多表連接)[例7]查詢選修1號(hào)課程的學(xué)生姓名。

StudentSnoSnameSsexSageSdept200215121P.李勇注意:示例元素Sno是連接屬性,其值在兩個(gè)表中要相同。

ScSnoCnoGrade2002151211條件查詢(非條件)[例8]查詢未選修1號(hào)課程的學(xué)生姓名

StudentSno

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論