關(guān)系模型與關(guān)系數(shù)據(jù)庫(kù)課件_第1頁(yè)
關(guān)系模型與關(guān)系數(shù)據(jù)庫(kù)課件_第2頁(yè)
關(guān)系模型與關(guān)系數(shù)據(jù)庫(kù)課件_第3頁(yè)
關(guān)系模型與關(guān)系數(shù)據(jù)庫(kù)課件_第4頁(yè)
關(guān)系模型與關(guān)系數(shù)據(jù)庫(kù)課件_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第1部分?jǐn)?shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)第2章關(guān)系模型與關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)系統(tǒng)及其應(yīng)用第1部分?jǐn)?shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)數(shù)據(jù)庫(kù)系統(tǒng)及其應(yīng)用第2章 關(guān)系模型與關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)模型2.1關(guān)系操作與關(guān)系查詢語(yǔ)言2.2SQL語(yǔ)言2.3應(yīng)用關(guān)系數(shù)據(jù)庫(kù)2.42022/10/112第2章 關(guān)系模型與關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)模型2.1關(guān)系操作與關(guān)系2.1 關(guān)系數(shù)據(jù)模型2.1.1 關(guān)系模型基礎(chǔ) 2.1.2 關(guān)系模型的約束及其表達(dá)2.1.3 關(guān)系數(shù)據(jù)庫(kù)2022/10/1132.1 關(guān)系數(shù)據(jù)模型2.1.1 關(guān)系模型基礎(chǔ) 2.1.1 關(guān)系模型基礎(chǔ) 關(guān)系(表)關(guān)系模型將數(shù)據(jù)庫(kù)表示為一組“關(guān)系(relation)”的集合。每個(gè)關(guān)系好比一個(gè)具有多個(gè)行(row

2、)和多個(gè)列(column)的二維值表(table)。每個(gè)關(guān)系含兩部分信息:關(guān)系模式(relation schema)和關(guān)系實(shí)例(relation instance)。在正式的關(guān)系模型術(shù)語(yǔ)中表行:被稱(chēng)為記錄(record)或元組(tuple)表列標(biāo)題:被稱(chēng)為屬性(attribute)或字段(field) 。2022/10/1142.1.1 關(guān)系模型基礎(chǔ) 關(guān)系(表)2022/10/104一個(gè)簡(jiǎn)單關(guān)系表的關(guān)系模式和關(guān)系實(shí)例示例(圖2.1)2022/10/115一個(gè)簡(jiǎn)單關(guān)系表的關(guān)系模式和關(guān)系實(shí)例示例(圖2.1)2022/其它幾個(gè)重要的關(guān)系模型概念(1) 屬性域在關(guān)系模型中,必須為每個(gè)屬性指定一個(gè)域(d

3、omain)。關(guān)系模式(relation schema)指一個(gè)關(guān)系的基本模式結(jié)構(gòu)定義。形式上,名為R的關(guān)系模式可表示為:R(A1:dom(A1),An:dom(An)關(guān)系實(shí)例(關(guān)系狀態(tài))關(guān)系的每個(gè)數(shù)據(jù)行稱(chēng)為一個(gè)元組,可形式表示為t =,關(guān)系的實(shí)例(狀態(tài))是一個(gè)元組集或記錄集,可形式表示為:r(R)=t1, t2, , tn2022/10/116其它幾個(gè)重要的關(guān)系模型概念(1) 屬性域2022/10/10其它幾個(gè)重要的關(guān)系模型概念(2) 關(guān)系數(shù)據(jù)庫(kù)模式 (Schema, S)指由一個(gè)關(guān)系模式集R1,R2,Rn和一個(gè)關(guān)系約束集ICs構(gòu)成的定義集;S=R1,R2,Rn+ICs。 關(guān)系數(shù)據(jù)庫(kù)狀態(tài)指特定

4、時(shí)刻DB中所有關(guān)系狀態(tài)的集合,即DB=r1,r2,rn,其中,ri是關(guān)系Ri的狀態(tài)。關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)(RDB),是采用關(guān)系模型來(lái)表示數(shù)據(jù)的數(shù)據(jù)庫(kù)。RDB的一個(gè)狀態(tài)也稱(chēng)為一個(gè)RDB實(shí)例。2022/10/117其它幾個(gè)重要的關(guān)系模型概念(2) 關(guān)系數(shù)據(jù)庫(kù)模式 (Sche2.1.2 關(guān)系模型的約束及其表達(dá) 完整性約束(Integrity Constraints, ICs)DBMS必須能強(qiáng)制實(shí)施與DB模式有關(guān)的所有約束,以限制允許存儲(chǔ)到DB的數(shù)據(jù),確保DB中只有滿足約束的合法數(shù)據(jù)。ICs的主要類(lèi)型包括域約束、主鍵約束和外鍵約束,它們常被統(tǒng)稱(chēng)為基于模式的約束。鍵約束超鍵(superkey,SK)的概

5、念能唯一標(biāo)識(shí)關(guān)系R中每個(gè)元組的一個(gè)屬性子集超鍵中可能會(huì)有冗余屬性候選鍵(Candidate Key)沒(méi)有冗余屬性的超鍵2022/10/1182.1.2 關(guān)系模型的約束及其表達(dá) 完整性約束(Integr引用完整性約束引用完整性約束(referential integrity constraint)指要在兩不同關(guān)系之間指定,用來(lái)維護(hù)兩關(guān)系元組間一致性的一種關(guān)系模型約束。該約束指定:當(dāng)某關(guān)系元組引用另一個(gè)關(guān)系中元組時(shí),只能引用已經(jīng)存在的元組。外鍵(Foreign Key,FK)定義外鍵條件指定了兩個(gè)關(guān)系模式R1和R2之間的一個(gè)引用完整性約束,或簡(jiǎn)稱(chēng)為外鍵約束。 2022/10/119引用完整性約束引

6、用完整性約束(referential int約束指定應(yīng)用實(shí)例2022/10/1110約束指定應(yīng)用實(shí)例2022/10/10102.2 關(guān)系操作與關(guān)系查詢語(yǔ)言2.2.1 關(guān)系代數(shù) 2.2.2 關(guān)系演算本章查詢表達(dá)說(shuō)明用例模式( “水手值勤服務(wù)”)Sailors(sid:integer, sname:string, rating:integer, age:integer);Boats(bid:integer, bname:string, color:string);Reserves(sid:integer, bid:integer, day:date);關(guān)系查詢語(yǔ)言的兩種屬性引用方法:(1) 屬性名

7、(2) 屬性在關(guān)系模式中的位置或順序號(hào)關(guān)系模型中除了引入描述DB結(jié)構(gòu)和約束的概念外,還引用了一組可操縱DB的操作-通過(guò)基于模型的專(zhuān)門(mén)語(yǔ)言,來(lái)表達(dá)模型操作。本節(jié)介紹:基于關(guān)系模型的兩種模型語(yǔ)言-關(guān)系代數(shù)/關(guān)系演算。下節(jié)介紹:以這兩種形式語(yǔ)言為基礎(chǔ)的關(guān)系模型標(biāo)準(zhǔn)化語(yǔ)言(SQL)2022/10/11112.2 關(guān)系操作與關(guān)系查詢語(yǔ)言2.2.1 關(guān)系代數(shù) “水手值勤服務(wù)”的一個(gè)簡(jiǎn)單模式實(shí)例2022/10/1112“水手值勤服務(wù)”的一個(gè)簡(jiǎn)單模式實(shí)例2022/10/10122.2.1 關(guān)系代數(shù)關(guān)系代數(shù)由一組操作符構(gòu)成。每個(gè)操作符接受1或2個(gè)關(guān)系實(shí)例作為參數(shù),返回一個(gè)關(guān)系實(shí)例作為結(jié)果。以下三個(gè)方面因素,可突

8、顯關(guān)系代數(shù)在RDBMS中的重要性和地位:它為關(guān)系模型操作提供了一個(gè)形式化的基礎(chǔ);是RDBMS查詢實(shí)現(xiàn)和優(yōu)化的基礎(chǔ);SQL結(jié)合并保留了很多關(guān)系代數(shù)的基本概念關(guān)系代數(shù)操作符的兩種主要類(lèi)型:基于集合論的操作,包括并、交、差和叉積等,這些操作的適用性源于“關(guān)系”本質(zhì)上是元組集合;另一類(lèi)操作則是專(zhuān)門(mén)為RDBMS開(kāi)發(fā)的操作,包括選擇、投影、連接,以及為聚合運(yùn)算引入的相關(guān)操作。2022/10/11132.2.1 關(guān)系代數(shù)關(guān)系代數(shù)由一組操作符構(gòu)成。每個(gè)操作符接受1. 并、交、差運(yùn)算 并、交、差這三個(gè)運(yùn)算操作都可對(duì)應(yīng)到集合論操作,它們都屬于二元操作符,要求有兩個(gè)被操作對(duì)象,且要求這兩個(gè)關(guān)系是相容的。并(RS):

9、 RS=t | tR tS 交(RS): RS=t | tR tS 差(RS): RS=t | tR tS 2022/10/11141. 并、交、差運(yùn)算 并、交、差這三個(gè)運(yùn)算操作都可對(duì)應(yīng)到集合2. 叉積操作叉積,也稱(chēng)為笛卡兒積(cartesian product),操作符用表示,屬于二元關(guān)系操作符,代數(shù)表達(dá)式為RS。2022/10/11152. 叉積操作叉積,也稱(chēng)為笛卡兒積(cartesian pr3. 選擇操作與投影操作選擇操作符表示為c(R) ,其中,c為條件表達(dá)式。 投影操作符表示為 L(R) ,其中,L為投影輸出的屬性子集列表A1,Am。2022/10/11163. 選擇操作與投影操作

10、選擇操作符表示為c(R) ,其中,4. 重命名操作在許多場(chǎng)合,輸出列名可以直接使用輸入關(guān)系的屬性名。但當(dāng)輸出列為表達(dá)式,或二元操作兩個(gè)輸入關(guān)系中含同名屬性,或希望改善原屬性名的可讀性等,都需要重命名機(jī)制。關(guān)系代數(shù)中引入了一個(gè)重命名操作符(),其代數(shù)表達(dá)形式為: ( R(A1A1, , AiAi,), E )例2.6 基于圖2.4(d) 的S1R1,寫(xiě)出表達(dá)式 ( R(1sid1, 5sid2), S1R1) 返回的R模式。2022/10/11174. 重命名操作在許多場(chǎng)合,輸出列名可以直接使用輸入關(guān)系的屬5. 連接操作連接操作(c),用來(lái)合并兩個(gè)關(guān)系中的信息將兩關(guān)系中相關(guān)的“元組對(duì)”合并成一個(gè)

11、元組輸出。雖然在概念上,RcS = L(c(RS);但按這種方法實(shí)現(xiàn)連接操作的效率很低。在RDBMS中,連接操作通常以獨(dú)立于叉積結(jié)果的方法實(shí)現(xiàn)。 2022/10/11185. 連接操作連接操作(c),用來(lái)合并兩個(gè)關(guān)系中的信息6. 消除重復(fù)與排序運(yùn)算 消除重復(fù)運(yùn)算的表達(dá)式為 (RB),其操作對(duì)象可以是包型關(guān)系或集合型關(guān)系。消除重復(fù)是一個(gè)代價(jià)較大的操作,故在很多實(shí)際系統(tǒng)中,默認(rèn)情況下的投影輸出都不自動(dòng)消除重復(fù)。 排序操作的代數(shù)符號(hào)表達(dá)式為T(mén) L(R)。該操作用來(lái)將關(guān)系R的所有元組,按L所指定方式排序輸出。L是一個(gè)屬性表達(dá)列表,具有形如A1 asc|desc, A2 asc|desc, 的形式202

12、2/10/11196. 消除重復(fù)與排序運(yùn)算 消除重復(fù)運(yùn)算的表達(dá)式為 (RB)7. 分組與聚合操作分組(grouping)與聚合(aggregating)操作的代數(shù)表達(dá)式為L(zhǎng)(R),該操作將關(guān)系R的所有元組按L指定方式進(jìn)行分組。L是一個(gè)列表表達(dá)式。聚合關(guān)系與原關(guān)系R一般具有不同的模式結(jié)構(gòu)。聚合關(guān)系中的屬性,必須或者是出現(xiàn)L中的屬性,或是一個(gè)聚合函數(shù)表達(dá)式。很多DB書(shū)籍或文獻(xiàn)中,都將aggregating運(yùn)算譯為聚集。本書(shū)中,考慮到已將clustering譯為聚簇、聚集。為避免混淆,同時(shí)也考慮到合計(jì)匯總運(yùn)算這個(gè)語(yǔ)義,故采用聚合這個(gè)譯法。2022/10/11207. 分組與聚合操作分組(groupi

13、ng)與聚合(aggr2.2.2 關(guān)系演算(relational calculus)關(guān)系演算為關(guān)系DB查詢提供了一種高級(jí)描述性表示法。它是一種形式化語(yǔ)言,其基礎(chǔ)是被稱(chēng)為謂詞(predicate)演算的數(shù)理邏輯分支一階謂詞邏輯(First Order Logic, FOL)。在演算表達(dá)式中,不需給出如何應(yīng)獲取結(jié)果的操作次序指示信息,只描述了結(jié)果中應(yīng)當(dāng)包括的信息。關(guān)系演算表達(dá)式描述了一個(gè)新的關(guān)系,這個(gè)新關(guān)系以變量形式來(lái)指定,變量取值范圍可是是新關(guān)系中的元組(元組演算),或是新關(guān)系中的屬性域(域演算)。元組演算對(duì)商業(yè)化關(guān)系查詢語(yǔ)言SQL發(fā)展有重要影響;域演算則是QBE (Query-By-Examp

14、le語(yǔ)言)的基礎(chǔ)。 2022/10/11212.2.2 關(guān)系演算(relational calculus元組關(guān)系演算(Tuple Relational Calculus,TRC) 元組變量是取值范圍限為特定關(guān)系元組的變量。TRC查詢的基本表達(dá)形式t | p(t),t 代表一個(gè)元組變量,而p(t)則是t應(yīng)當(dāng)滿足的邏輯公式。查詢結(jié)果是能使邏輯公式p(t)為真值的所有元組t集合。構(gòu)造TRC查詢表達(dá)的核心任務(wù)是給出邏輯公式p(t), 本質(zhì)上TRC邏輯公式是FOL公式的一個(gè)子集。應(yīng)用舉例要檢索職級(jí)超過(guò)7的水手,TRC表達(dá)為:S |SSailors S.rating 7 2022/10/1122元組關(guān)系演

15、算(Tuple Relational CalculTRC原子公式,是下面形式之一:R Rel 是最基本原子公式,表達(dá)元組變量R的取值。R.a op S.b 或 R.a op const 或 const op R.a 是比較型原子公式,表達(dá)R在其指定屬性上的取值限定。任何TRC公式可由如下任一方法遞歸地構(gòu)造產(chǎn)生:任何一個(gè)原子公式。p(取反), p q (與連接構(gòu)造), p q (或連接構(gòu)造), pq(蘊(yùn)涵: 若p為真,q必為真)。R(p(R),R是元組變量。R(p(R),R是元組變量。TRC查詢的語(yǔ)法與語(yǔ)義 令Rel是關(guān)系名; 邏輯操作符op , =,; R和S是元組變量,a與b分別是R與S的一

16、個(gè)屬性; p和q是一個(gè)TRC公式。該表達(dá)語(yǔ)義是:對(duì)p(R)中的每個(gè)自由變量(包括R),至少存在一個(gè)能使公式p(R)為真的元組賦值。(綁定到變量R的存在量詞)通常一個(gè)公式p(R)中會(huì)包含一個(gè)RRel條件,以及一些關(guān)于R的量詞限定表達(dá)。為簡(jiǎn)潔起見(jiàn), 常用RRel(p(R) 替代R(RRelp(R) 常用RRel(p(R) 替代R(RRelp(R) 2022/10/1123TRC查詢的語(yǔ)法與語(yǔ)義 令Rel是關(guān)系名; 邏輯操作符op 域關(guān)系演算(Domain Relational Calculus, DRC) DRC公式可按類(lèi)似TRC公式的方式進(jìn)行形式定義。這兩類(lèi)公式定義的主要差別是變量的取值范圍。令

17、X和Y是域變量。DRC原子公式是下面形式之一: Rel Rel是含有n個(gè)屬性的關(guān)系名,每個(gè)xi , 1in,或是一個(gè)變量,或是一個(gè)常數(shù)。X op Y 或 X op constant 或 constant op X任何DRC公式可由如下任一方法遞歸地構(gòu)造產(chǎn)生。任何一個(gè)DRC原子公式;p(取反), p q (與連接構(gòu)造), p q (或連接構(gòu)造), pq(蘊(yùn)涵: 若p為真,q必為真)X(p(X),X是 。X(p(X),X是 。2022/10/1124域關(guān)系演算(Domain Relational CalculDRC查詢示例(Q3) 查詢被指派到103號(hào)船值勤的水手名 | I,T,A(Sailors

18、 Ir ,Br ,D ( Reserves Ir = I Br=103)若引入簡(jiǎn)記法,也可改寫(xiě)為: | I,T,A(Sailors Reserves(Ir = I Br=103)該式還可用如下更簡(jiǎn)潔的寫(xiě)法: | I,T,A(Sailors D( Reserves) )(Q4) 查詢?cè)谝粋€(gè)紅船上值勤過(guò)的所有水手名字 | I,T,A(Sailors Reserves Boats 2022/10/1125DRC查詢示例(Q3) 查詢被指派到103號(hào)船值勤的水手名22.3 SQL語(yǔ)言2.3.1 用DDL定義數(shù)據(jù)庫(kù) 2.3.2 用DML操縱數(shù)據(jù)庫(kù)2.3.3 視圖2022/10/11262.3 SQL語(yǔ)

19、言2.3.1 用DDL定義數(shù)據(jù)庫(kù) SQL語(yǔ)言簡(jiǎn)介SQL是結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)的縮寫(xiě)。SQL發(fā)展簡(jiǎn)史最初由IBM研究院設(shè)計(jì)實(shí)現(xiàn),并作為IBM早期數(shù)據(jù)庫(kù)系統(tǒng)SYSTEM R的接口。第一個(gè)SQL標(biāo)準(zhǔn)是1986由美國(guó)國(guó)家標(biāo)準(zhǔn)署(ANSI)推出的SQL1,也稱(chēng)SQL-86。在SQL-86基礎(chǔ)上,ANSI還推出了一個(gè)改進(jìn)版SQL-89。1992年,ANSI與國(guó)際標(biāo)準(zhǔn)化組織(ISO)合作,對(duì)原有版本進(jìn)行了較大的修訂和擴(kuò)充,共同推出了一個(gè)更完整的SQL新標(biāo)準(zhǔn),稱(chēng)為SQL-92(也稱(chēng)SQL2)。最新也最終版本是1999年ANSI/ISO推出的SQL-99(也稱(chēng)SQ

20、L3)。SQL現(xiàn)已成為商業(yè)化DBMS的標(biāo)準(zhǔn)語(yǔ)言。2022/10/1127SQL語(yǔ)言簡(jiǎn)介SQL是結(jié)構(gòu)化查詢語(yǔ)言(Structured 2.3.1 用DDL定義數(shù)據(jù)庫(kù) (1)定義DB模式與DB編目DB模式,也稱(chēng)SQL模式(SQL schema)最早由SQL-92引入,旨在將同屬于一個(gè)DB應(yīng)用的表和其它構(gòu)造組織在一起。SQL-92中,創(chuàng)建模式的SQL語(yǔ)句為: CREATE SCHEMA sailorMDB AUTHORIZATION Jsmith PASSWORD 123 (2)定義關(guān)系模式建表命令(CREATE TABLE)用來(lái)創(chuàng)建或定義關(guān)系表。2022/10/11282.3.1 用DDL定義數(shù)據(jù)

21、庫(kù) (1)定義DB模式與DB編目創(chuàng)建表示例創(chuàng)建“水手”小模式 2022/10/1129創(chuàng)建表示例創(chuàng)建“水手”小模式 2022/10/10292.3.1 用DDL定義數(shù)據(jù)庫(kù) (1)定義DB模式與DB編目(2)定義關(guān)系模式(3)更改SQL模式定義DROP命令:是CREATE命令的逆命令。用來(lái)刪除命名的模式或模式元素,如表、域、約束、視圖,等。命令的基本格式為:DROP 例1 DROP SCHEMA RESTRICT例2 DROP TABLE CASCADEALTER命令 :用來(lái)更改表或其它模型元素定義。2022/10/11302.3.1 用DDL定義數(shù)據(jù)庫(kù) (1)定義DB模式與DB編目2.3.2

22、用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 (一)SQL查詢的基本形式SELECT DISTINCT select_listFROM from-listWHERE (二)SQL基本查詢的語(yǔ)義 (概念賦值策略)計(jì)算出現(xiàn)在from-list中關(guān)系表的叉積;刪除叉積結(jié)果中不滿足WHERE中條件的元組;刪除未出現(xiàn)在select-list中的列;如果指定了DISTINCT,刪除重復(fù)元組。 (與實(shí)際DBMS中的查詢賦值策略相比,概念賦值策略通常不考慮效率,更強(qiáng)調(diào)概念性和易理解性) 2022/10/11312.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 2022/SQL基本查詢應(yīng)用舉例(1)2022/10/11

23、32SQL基本查詢應(yīng)用舉例(1)2022/10/1032SQL基本查詢應(yīng)用舉例(2)2022/10/1133SQL基本查詢應(yīng)用舉例(2)2022/10/10332.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 二、在SQL命令中使用表達(dá)式和字符串 select-list中的每個(gè)項(xiàng),除了可以是相關(guān)表的屬性名外,還允許是形如 AS 輸出列名 這種更一般的表達(dá)。WHERE語(yǔ)句中的條件項(xiàng),也允許含一般表達(dá)式。 三、集合運(yùn)算SQL提供了并(UNION)、交(INTERSECT)、差(EXCEPT)等三種集合操作,以擴(kuò)展基本查詢。2022/10/11342.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 2

24、022/在SQL中使用表達(dá)式和字符串舉例2022/10/1135在SQL中使用表達(dá)式和字符串舉例2022/10/1035集合運(yùn)算 應(yīng)用舉例 顯然,對(duì)前面的Q8、Q9這兩查詢,利用集合操作符,我們可得到更清晰、更好理解的表達(dá)。2022/10/1136集合運(yùn)算 應(yīng)用舉例 顯然,對(duì)前面的Q8、Q9這兩2.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 二、在SQL命令中使用表達(dá)式和字符串 三、集合運(yùn)算四、嵌入查詢?cè)试S在條件項(xiàng)中引用“基于另一表的即時(shí)計(jì)算值”,是SQL的一個(gè)強(qiáng)有力特性,可有效提高查詢表達(dá)能力。為獲得即時(shí)引用值,可通過(guò)在條件項(xiàng)中嵌入另一個(gè)SQL查詢來(lái)實(shí)現(xiàn)。內(nèi)嵌的查詢稱(chēng)為子查詢,含子查詢的查

25、詢稱(chēng)為嵌入查詢。2022/10/11372.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 2022/嵌入查詢應(yīng)用舉例可用嵌入查詢來(lái)重新表達(dá)Q3、Q4 2022/10/1138嵌入查詢應(yīng)用舉例可用嵌入查詢來(lái)重新表達(dá)Q3、Q4 2022/2.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 二、在SQL命令中使用表達(dá)式和字符串 三、集合運(yùn)算四、嵌入查詢五、聚合操作除了簡(jiǎn)單存取數(shù)據(jù),查詢也經(jīng)常需要執(zhí)行一些匯總(summarization)計(jì)算,或分組合計(jì)。標(biāo)準(zhǔn)SQL支持以下五種基本聚合操作:COUNT(DISTINCTA): 計(jì)算屬性A上(不同)值的個(gè)數(shù)SUM(DISTINCTA): 計(jì)算屬性A上(不同

26、)值的合計(jì)值A(chǔ)VG(DISTINCTA): 計(jì)算屬性A上(不同)值的平均值MAX(A): 計(jì)算屬性A上的最大值;MIN(A): 計(jì)算屬性A上的最小值; 除count外,其它四個(gè)操作都要求屬性A的域?yàn)閿?shù)值型。2022/10/11392.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 2022/五、聚合操作(一)在查詢表達(dá)中簡(jiǎn)單應(yīng)用聚合函數(shù) (Q15)查職級(jí)=2的所有水手平均/最大/最小年齡/總?cè)藬?shù) SELECT AVG(S.age) AS avg_age, MAX(S.age) AS max_age, COUNT(*) AS num FROM Sailors S WHERE S.rating=2(

27、Q16)查比職級(jí)為2的最大年齡水手年齡更大的水手SELECT S.sname FROM Sailors S WHERE S.age (SELECT MAX(S2.age) FROM Sailors S2 WHERE S2.rating=2)(二)分組計(jì)算聚合值2022/10/1140五、聚合操作(一)在查詢表達(dá)中簡(jiǎn)單應(yīng)用聚合函數(shù)2022/10五、聚合操作(一)在查詢表達(dá)中簡(jiǎn)單應(yīng)用聚合函數(shù)(Q15、Q16)都是針對(duì)關(guān)系中被選擇的所有元組進(jìn)行聚合計(jì)算,這相當(dāng)于只有一個(gè)分組(組中包含了所有被選擇元組) 。(二)分組計(jì)算聚合值SQL也支持針對(duì)關(guān)系中被選擇的元組進(jìn)行分組,并針對(duì)每個(gè)分組進(jìn)行聚合計(jì)算。 增

28、加分組聚合的擴(kuò)展SQL語(yǔ)句基本形式為: SELECT DISTINCT select_list FROM from-list WHERE select-conditon GROUP BY grouping-attribute-listA1, A2, HAVING grouping-select-conditon分組聚合擴(kuò)展查詢語(yǔ)句表達(dá)的賦值策略 2022/10/1141五、聚合操作(一)在查詢表達(dá)中簡(jiǎn)單應(yīng)用聚合函數(shù)2022/102.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 二、在SQL命令中使用表達(dá)式和字符串 三、集合運(yùn)算四、嵌入查詢五、聚合操作六、外連接操作是連接操作的一類(lèi)重要變體,其結(jié)

29、果實(shí)例中通常會(huì)有大量NULL值,可能產(chǎn)生比條件連接更多的結(jié)果元組外連接又分“左外連接”、“右外連接”和“左右外連接”2022/10/11422.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 2022/六、外連接操作(outer joins)左外連接(left outer join) 左表中那些不匹配的元組也會(huì)被加入到結(jié)果中。左表的每個(gè)不匹配元組與右表空元組(所有列都取NULL值)拼接產(chǎn)生一個(gè)結(jié)果元組。右外連接(right outer join)右表中那些不匹配的元組也會(huì)被加入到結(jié)果中。全外連接(full outer join) 兩個(gè)表中不匹配元組都會(huì)分別與另一表的空元組組合,加入到連接結(jié)果集中

30、。查詢示例:SELECT S.sid, R.bid, R.day FROM Sailors S NATURAL LEFT OUTER JOIN Reserves R2022/10/1143六、外連接操作(outer joins)左外連接(left 2.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 二、在SQL命令中使用表達(dá)式和字符串 三、集合運(yùn)算四、嵌入查詢五、聚合操作六、外連接操作七、修改數(shù)據(jù)庫(kù)更新或修改DB主要包括三種基本操作:插入(insert)、刪除(delete)和修改(update)。2022/10/11442.3.2 用DML操縱數(shù)據(jù)庫(kù)一、SQL基本查詢 2022/修改數(shù)據(jù)庫(kù)操作

31、的基本語(yǔ)法說(shuō)明2022/10/1145修改數(shù)據(jù)庫(kù)操作的基本語(yǔ)法說(shuō)明2022/10/1045修改數(shù)據(jù)庫(kù)操作應(yīng)用示例2022/10/1146修改數(shù)據(jù)庫(kù)操作應(yīng)用示例2022/10/10462.3.3 視圖讓用戶看都DB中所有數(shù)據(jù)是不合適的。首先,從安全的角度考慮,我們可能更希望各用戶只看到與其有關(guān)的哪些數(shù)據(jù)。其次,不同用戶,可能需要以特有的個(gè)性化視角來(lái)觀察所感興趣的數(shù)據(jù)子集。在DB中,通過(guò)引入視圖(view)這一概念來(lái)解決以上問(wèn)題。原則上,基于一組給定的實(shí)關(guān)系,我們能創(chuàng)建一組任意大小視圖集。視圖定義的基本形式為: CREATE VIEW AS 2022/10/11472.3.3 視圖讓用戶看都DB中所有數(shù)據(jù)是不合適的。20222.4 應(yīng)用關(guān)系數(shù)據(jù)庫(kù)2.4.1 DB存儲(chǔ)過(guò)程與SQL/PSM 2.4.2 在通用編程語(yǔ)言中嵌入SQL語(yǔ)言2.4.3 基于API接口訪問(wèn)數(shù)據(jù)庫(kù):ODBC與JDBC 作為一種非過(guò)程化的、聲明性語(yǔ)言,SQL為用戶使用、操縱RDBMS帶來(lái)了極大的方便。允許用戶基于關(guān)系模型的概念層次來(lái)表達(dá)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論