版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫(kù)原理及應(yīng)用復(fù)習(xí)重點(diǎn)第一章 數(shù)據(jù)庫(kù)系統(tǒng)基本概念一、 數(shù)據(jù)管理技術(shù)的發(fā)展1 分為四個(gè)階段:人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫(kù)階段和高級(jí)數(shù)據(jù)庫(kù)階段。2 數(shù)據(jù)庫(kù)階段數(shù)據(jù)管理的特點(diǎn):1) 采用數(shù)據(jù)模型表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。2) 有較高的數(shù)據(jù)獨(dú)立性。3) 數(shù)據(jù)庫(kù)系統(tǒng)為用戶提供了方便的用戶接口。4) 提供四方面的數(shù)據(jù)控制功能:數(shù)據(jù)庫(kù)的恢復(fù)、數(shù)據(jù)庫(kù)的并發(fā)控制、數(shù)據(jù)的完整性、數(shù)據(jù)安全性。5) 增加了系統(tǒng)的靈活性。3 數(shù)據(jù)庫(kù)(DB):是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。4 數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS):是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,它為用戶或應(yīng)用程序提供訪問DB的方法,包括D
2、B的建立、查詢、更新及各種數(shù)據(jù)控制。5 數(shù)據(jù)庫(kù)系統(tǒng)(DBS):是實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù)、方便多用戶訪問的計(jì)算機(jī)硬件、軟件和數(shù)據(jù)資源組成的系統(tǒng),即它是采用數(shù)據(jù)庫(kù)技術(shù)的計(jì)算機(jī)系統(tǒng)。二、 數(shù)據(jù)描述1 分為三個(gè)階段:概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)。2 概念設(shè)計(jì)中的術(shù)語(yǔ):1) 實(shí)體:客觀存在,可以相互區(qū)別的事物稱為實(shí)體。2) 實(shí)體集:性質(zhì)相同的同類實(shí)體的集合。3) 屬性:實(shí)體有很多特性,每一個(gè)特性稱為屬性。4) 實(shí)體標(biāo)識(shí)符(關(guān)鍵碼或鍵):能惟一標(biāo)識(shí)實(shí)體的屬性或?qū)傩约R陨细拍罹蓄愋秃椭抵帧? 邏輯設(shè)計(jì)中的術(shù)語(yǔ):1) 字段(數(shù)據(jù)項(xiàng)):標(biāo)記實(shí)體屬性的命名單位稱為字段或數(shù)據(jù)項(xiàng)。2) 記錄:字段
3、的有序集合。3) 文件:同一類記錄的集合。4) 關(guān)鍵碼:能惟一標(biāo)識(shí)文件中每個(gè)記錄的字段或字段集。以上概念均有類型和值之分。4 概念設(shè)計(jì)和邏輯設(shè)計(jì)中術(shù)語(yǔ)的對(duì)應(yīng)關(guān)系:概念設(shè)計(jì) 邏輯設(shè)計(jì) 實(shí)體 記錄屬性 字段(數(shù)據(jù)項(xiàng))實(shí)體集 文件實(shí)體標(biāo)識(shí)符 關(guān)鍵碼5 實(shí)體之間聯(lián)系的元數(shù):與一個(gè)聯(lián)系有關(guān)的實(shí)體集個(gè)數(shù)。常用二元聯(lián)系。二元聯(lián)系的類型有三種:一對(duì)一聯(lián)系、一對(duì)多聯(lián)系、多對(duì)多聯(lián)系。6 一對(duì)一聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體至多和實(shí)體集E2中的一個(gè)實(shí)體有聯(lián)系,反之亦然,那么實(shí)體集E1和E2的聯(lián)系稱為“一對(duì)一聯(lián)系”,記為“1:1”。7 一對(duì)多聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體與實(shí)體集E2中任意個(gè)(零個(gè)或多個(gè))實(shí)體間有聯(lián)系
4、,而E2中每個(gè)實(shí)體至多和E1中一個(gè)實(shí)體有聯(lián)系,那么稱E1對(duì)E2的聯(lián)系是“一對(duì)多聯(lián)系”,記為“1:N”。8 多對(duì)多聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體可以與實(shí)體集E2中任意個(gè)(零個(gè)或多個(gè))實(shí)體間有聯(lián)系,反之亦然,那么稱E1和E2的聯(lián)系是“多對(duì)多聯(lián)系”,記為“M:N”。三、 數(shù)據(jù)抽象的級(jí)別1 數(shù)據(jù)模型:描述數(shù)據(jù)庫(kù)的結(jié)構(gòu)和定義,對(duì)現(xiàn)實(shí)世界的數(shù)據(jù)進(jìn)行抽象。2 從現(xiàn)實(shí)世界的信息到數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)以及用戶使用的數(shù)據(jù)是一個(gè)逐步抽象過(guò)程,根據(jù)數(shù)據(jù)抽象的級(jí)別定義了四種模型:概念模型、邏輯模型、外部模型和內(nèi)部模型。3 概念模型:表達(dá)用戶需求觀點(diǎn)的數(shù)據(jù)全局邏輯結(jié)構(gòu)的模型。4 邏輯模型:表達(dá)計(jì)算機(jī)實(shí)現(xiàn)觀點(diǎn)的DB全局邏輯結(jié)構(gòu)
5、的模型。5 外部模型:表達(dá)用戶使用觀點(diǎn)的DB局部邏輯結(jié)構(gòu)的模型。6 內(nèi)部模型:表達(dá)DB物理結(jié)構(gòu)的模型。7 數(shù)據(jù)抽象的過(guò)程、即數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程具體步驟:1) 根據(jù)用戶需求,設(shè)計(jì)數(shù)據(jù)庫(kù)的概念模型;2) 根據(jù)轉(zhuǎn)換規(guī)則,把概念模型轉(zhuǎn)換成數(shù)據(jù)庫(kù)的邏輯模型;3) 根據(jù)用戶的業(yè)務(wù)特點(diǎn),設(shè)計(jì)不同的外部模型,給程序員使用;4) 數(shù)據(jù)庫(kù)實(shí)現(xiàn)時(shí),要根據(jù)邏輯模型設(shè)計(jì)其內(nèi)部模型。通常分為概念設(shè)計(jì)、邏輯設(shè)計(jì)(2和3步)和物理設(shè)計(jì)三個(gè)階段。8 常用的概念模型是實(shí)體聯(lián)系(ER)模型,ER模型主要用ER圖來(lái)表示。9 邏輯模型的分類:層次模型、網(wǎng)狀模型、關(guān)系模型等。10 層次模型:用樹型(層次)結(jié)構(gòu)表示實(shí)體及實(shí)體間聯(lián)系的數(shù)據(jù)模型
6、。11 1969年,美國(guó)IBM公司的IMS系統(tǒng)是典型的層次模型系統(tǒng)。12 網(wǎng)狀模型:用有向圖結(jié)構(gòu)表示實(shí)體及實(shí)體間聯(lián)系的數(shù)據(jù)模型。13 1969年,CODASYL組織提出DBTG報(bào)告中的數(shù)據(jù)模型是網(wǎng)狀模型的主要代表。14 關(guān)系模型:是由若干個(gè)關(guān)系模式組成的集合。關(guān)系模式即記錄類型,它的實(shí)例稱為關(guān)系,每個(gè)關(guān)系實(shí)際上是一張二維表格。15 1970年,美國(guó)IBM公司的E.F.Codd連續(xù)發(fā)表論文,提出關(guān)系模型,奠定了關(guān)系數(shù)據(jù)庫(kù)的理論基礎(chǔ)。關(guān)系數(shù)據(jù)庫(kù)是目前的主流數(shù)據(jù)庫(kù)。16 外部模型中的模式稱為視圖。17 三級(jí)模式:從用戶(或應(yīng)用程序)到數(shù)據(jù)庫(kù)之間,DB的數(shù)據(jù)結(jié)構(gòu)描述有三個(gè)層次:1)外模式:用戶與數(shù)據(jù)庫(kù)
7、系統(tǒng)的接口,是用戶用到的那部分?jǐn)?shù)據(jù)的描述。外模式由若干個(gè)記錄類型組成。2)邏輯模式:是數(shù)據(jù)庫(kù)中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述。3)內(nèi)模式:是數(shù)據(jù)庫(kù)在物理存儲(chǔ)方面的描述。注意:外模式是邏輯模式的子集。18 兩級(jí)映像:1)外模式/邏輯模式映像:存在于外模式和邏輯模式之間,用于定義外模式和邏輯模式之間的對(duì)應(yīng)性。2)邏輯模式/內(nèi)模式映像:存在于邏輯模式和內(nèi)模式之間,用于定義邏輯模式和內(nèi)模式之間的對(duì)應(yīng)性。19 數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式、兩級(jí)映像結(jié)構(gòu)使數(shù)據(jù)庫(kù)系統(tǒng)達(dá)到了高度的數(shù)據(jù)獨(dú)立性。20 數(shù)據(jù)獨(dú)立性:是指應(yīng)用程序與數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)之間相互獨(dú)立,在修改數(shù)據(jù)結(jié)構(gòu)時(shí),盡可能不修改應(yīng)用程序。分為邏輯數(shù)據(jù)獨(dú)立性和物理數(shù)
8、據(jù)獨(dú)立性。21 邏輯數(shù)據(jù)獨(dú)立性:如果數(shù)據(jù)庫(kù)的邏輯模式要修改,那么只要對(duì)外模式/邏輯模式映像作相應(yīng)的修改,可以使外模式和應(yīng)用程序盡可能保持不變。這樣就認(rèn)為數(shù)據(jù)庫(kù)達(dá)到了邏輯數(shù)據(jù)獨(dú)立性。22 物理數(shù)據(jù)獨(dú)立性:如果數(shù)據(jù)庫(kù)的內(nèi)模式要修改,即數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)有所變化,那么只要對(duì)邏輯模式/內(nèi)模式映像作相應(yīng)的修改,可以使邏輯模式盡可能保持不變。也就是對(duì)內(nèi)模式的修改盡量不影響邏輯模式,當(dāng)然對(duì)外模式和應(yīng)用程序的影響更小,這樣就認(rèn)為數(shù)據(jù)庫(kù)達(dá)到了物理數(shù)據(jù)獨(dú)立性。四、 數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)1DBMS的主要功能:數(shù)據(jù)庫(kù)的定義功能(DBMS提供DDL定義數(shù)據(jù)庫(kù)的三級(jí)模式、兩級(jí)映像等)、數(shù)據(jù)庫(kù)的操縱功能(DBMS提供D
9、ML實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作,基本的數(shù)據(jù)操作有檢索和更新兩類)、數(shù)據(jù)庫(kù)的保護(hù)功能、數(shù)據(jù)庫(kù)的維護(hù)功能、數(shù)據(jù)字典。五、 數(shù)據(jù)庫(kù)系統(tǒng)(DBS)1DBS的組成:是數(shù)據(jù)庫(kù)、硬件、軟件和數(shù)據(jù)庫(kù)管理員的集合體。2軟件包括DBMS、OS、各種主語(yǔ)言和應(yīng)用開發(fā)支撐軟件等程序。其中,DBMS是DBS的核心軟件,要在OS支持下才能工作。3數(shù)據(jù)庫(kù)管理員(DBA):是控制數(shù)據(jù)整體結(jié)構(gòu)的一組人員,負(fù)責(zé)DBS的正常運(yùn)行,承擔(dān)創(chuàng)建、監(jiān)控和維護(hù)數(shù)據(jù)庫(kù)結(jié)構(gòu)的責(zé)任。第二章 數(shù)據(jù)庫(kù)設(shè)計(jì)和ER模型一、數(shù)據(jù)庫(kù)系統(tǒng)生存期1數(shù)據(jù)庫(kù)系統(tǒng)生存期:數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)從開始規(guī)劃、設(shè)計(jì)、實(shí)現(xiàn)、維護(hù)到最后被新的系統(tǒng)取代而停止使用的整個(gè)期間。2數(shù)據(jù)庫(kù)系統(tǒng)生存期分七個(gè)
10、階段:規(guī)劃、需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)、實(shí)現(xiàn)、運(yùn)行維護(hù)。3規(guī)劃階段三個(gè)步驟:系統(tǒng)調(diào)查、可行性分析、確定數(shù)據(jù)庫(kù)系統(tǒng)總目標(biāo)。4需求分析階段:主要任務(wù)是系統(tǒng)分析員和用戶雙方共同收集數(shù)據(jù)庫(kù)系統(tǒng)所需要的信息內(nèi)容和用戶對(duì)處理的需求,并以需求說(shuō)明書的形式確定下來(lái)。5概念設(shè)計(jì)階段:產(chǎn)生反映用戶單位信息需求的概念模型。與硬件和DBMS無(wú)關(guān)。6邏輯設(shè)計(jì)階段:將概念模型轉(zhuǎn)換成DBMS能處理的邏輯模型。外模型也將在此階段完成。7物理設(shè)計(jì)階段:對(duì)于給定的基本數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過(guò)程。數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)主要指數(shù)據(jù)庫(kù)的存儲(chǔ)記錄格式、存儲(chǔ)記錄安排和存取方法。8數(shù)據(jù)庫(kù)的實(shí)現(xiàn):包括定義數(shù)據(jù)庫(kù)結(jié)構(gòu)、
11、數(shù)據(jù)裝載、編制與調(diào)試應(yīng)用程序、數(shù)據(jù)庫(kù)試運(yùn)行。二、ER模型的基本概念1 ER模型的基本元素是:實(shí)體、聯(lián)系和屬性。2 實(shí)體:是一個(gè)數(shù)據(jù)對(duì)象,指應(yīng)用中可以區(qū)別的客觀存在的事物。實(shí)體集:是指同一類實(shí)體構(gòu)成的集合。實(shí)體類型:是對(duì)實(shí)體集中實(shí)體的定義。一般將實(shí)體、實(shí)體集、實(shí)體類型統(tǒng)稱為實(shí)體。3 聯(lián)系:表示一個(gè)或多個(gè)實(shí)體之間的關(guān)聯(lián)關(guān)系。聯(lián)系集:是指同一類聯(lián)系構(gòu)成的集合。聯(lián)系類型:是對(duì)聯(lián)系集中聯(lián)系的定義。一般將聯(lián)系、聯(lián)系集、聯(lián)系類型統(tǒng)稱為聯(lián)系。4 同一個(gè)實(shí)體集內(nèi)部實(shí)體之間的聯(lián)系,稱為一元聯(lián)系;兩個(gè)不同實(shí)體集實(shí)體之間的聯(lián)系,稱為二元聯(lián)系,以此類推。5 屬性:實(shí)體的某一特性稱為屬性。在一個(gè)實(shí)體中,能夠惟一標(biāo)識(shí)實(shí)體的
12、屬性或?qū)傩约Q為實(shí)體標(biāo)識(shí)符。6 ER模型中,方框表示實(shí)體、菱形框表示聯(lián)系、橢圓形框表示屬性、實(shí)體與聯(lián)系、實(shí)體與其屬性、聯(lián)系與其屬性之間用直線連接。實(shí)體標(biāo)識(shí)符下畫橫線。聯(lián)系的類型要在直線上標(biāo)注。注意:聯(lián)系也有可能存在屬性,但聯(lián)系本身沒有標(biāo)識(shí)符。例:假設(shè)一個(gè)學(xué)生可選多門課程,而一門課程又有多個(gè)學(xué)生選修,一個(gè)教師可講多門課程,一門課程至多只有一個(gè)教師講授。ER圖如下:7 概念設(shè)計(jì)三個(gè)步驟:設(shè)計(jì)局部ER模型、設(shè)計(jì)全局ER模型和全局ER模型的優(yōu)化。三、關(guān)系模型的基本概念1關(guān)系模型的定義:用二維表格表示實(shí)體集,用關(guān)鍵碼表示實(shí)體之間聯(lián)系的數(shù)據(jù)模型。2在關(guān)系模型中,字段稱為屬性,字段值稱為屬性值,記錄類型稱為
13、關(guān)系模式。記錄稱為元組,元組的集合稱為關(guān)系或?qū)嵗?。有時(shí)習(xí)慣稱關(guān)系為表或表格,元組為行,屬性為列。關(guān)系中屬性個(gè)數(shù)稱為元數(shù),元組個(gè)數(shù)稱為基數(shù)。3關(guān)鍵碼(簡(jiǎn)稱鍵):由一個(gè)或多個(gè)屬性組成。4超鍵:在關(guān)系中能惟一標(biāo)識(shí)元組的屬性集稱為關(guān)系模式的超鍵。5候選鍵:不含有多余屬性的超鍵。6主鍵:用戶選作元組標(biāo)識(shí)的候選鍵。一般如不加說(shuō)明,鍵是指主鍵。7外鍵:如果模式R中屬性集K是其他模式的主鍵,那么K在模式R中稱為外鍵。8值域:關(guān)系中每一個(gè)屬性都有一個(gè)取值范圍,稱為屬性的值域。每一個(gè)屬性對(duì)應(yīng)一個(gè)值域,不同的屬性可對(duì)應(yīng)于同一值域。9關(guān)系的定義:關(guān)系是一個(gè)屬性數(shù)目相同的元組的集合。10關(guān)系的性質(zhì):關(guān)系是一種規(guī)范化了的
14、二維表格。1)關(guān)系中每一個(gè)屬性值都是不可分解的;2)關(guān)系中不允許出現(xiàn)重復(fù)元組;3)關(guān)系沒有行序;4)元組中的屬性在理論上也是無(wú)序的,但使用時(shí)按習(xí)慣考慮列的順序。11關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)與更新操作必須遵循三類完整性規(guī)則:實(shí)體完整性規(guī)則、參照完整性規(guī)則、用戶定義的完整性規(guī)則。12實(shí)體完整性規(guī)則:要求關(guān)系中元組在組成主鍵的屬性上不能有空值。13參照完整性規(guī)則:如果屬性集K是關(guān)系模式R1的主鍵,K也是關(guān)系模式R2的外鍵,那么在R2關(guān)系中,K的取值只允許兩種可能,或者為空值,或者等于R1關(guān)系中某個(gè)主鍵值。這條規(guī)則的實(shí)質(zhì)是“不允許引用不存在的實(shí)體”。其中,R1稱為參照關(guān)系;R2稱為依賴關(guān)系。注意:這條規(guī)則在
15、具體使用時(shí),有三點(diǎn)變通:1)外鍵和相應(yīng)的主鍵可以不同名,只要定義在相同值域上即可;2)R1和R2可以是同一個(gè)關(guān)系模式,此時(shí)表示了同一個(gè)關(guān)系中不同元組之間的聯(lián)系;3)外鍵值是否允許空,應(yīng)視具體問題而定。14用戶定義的完整性規(guī)則:用戶針對(duì)具體的數(shù)據(jù)約束,設(shè)置的完整性規(guī)則,由系統(tǒng)來(lái)檢驗(yàn)實(shí)施。四、ER模型到關(guān)系模型的轉(zhuǎn)換1ER圖轉(zhuǎn)換成關(guān)系模式集的算法:1)實(shí)體類型的轉(zhuǎn)換:將每個(gè)實(shí)體類型轉(zhuǎn)換成一個(gè)關(guān)系模式,實(shí)體的屬性即為關(guān)系模式的屬性,實(shí)體標(biāo)識(shí)符即為關(guān)系模式的鍵。2)聯(lián)系類型的轉(zhuǎn)換:主要掌握二元聯(lián)系類型的轉(zhuǎn)換。a) 若實(shí)體間聯(lián)系是1:1,可以在兩個(gè)實(shí)體類型轉(zhuǎn)換成的關(guān)系模式中任意一個(gè)關(guān)系模式的屬性中加入另
16、一個(gè)關(guān)系模式的鍵(作為外鍵)和聯(lián)系類型的屬性。b) 若實(shí)體間聯(lián)系是1:N,則在N端實(shí)體類型轉(zhuǎn)換成的關(guān)系模式中加入1端實(shí)體類型的鍵(作為外鍵)和聯(lián)系類型的屬性。c) 若實(shí)體間聯(lián)系是M:N,則將聯(lián)系類型也轉(zhuǎn)換成關(guān)系模式,其屬性為兩端實(shí)體類型的鍵(作為外鍵)加上聯(lián)系類型的屬性,而鍵為兩端實(shí)體鍵的組合。例:下面是教學(xué)管理的一個(gè)可能的ER圖。圖中,有三個(gè)實(shí)體類型:系、教師和課程;有四個(gè)聯(lián)系類型:主管、聘用、開設(shè)和任教。根據(jù)轉(zhuǎn)換算法,把該圖轉(zhuǎn)換成關(guān)系模式集的步驟如下:第一步:把三個(gè)實(shí)體類型轉(zhuǎn)換成三個(gè)關(guān)系模式(注意關(guān)系模式的表示方法):系(系編號(hào),系名,電話)教師(教工號(hào),姓名,性別,職稱)課程(課程號(hào),課
17、程名,學(xué)分)第二步:對(duì)于1:1聯(lián)系,可以在“系”模式中加入教工號(hào)(教工號(hào)為外鍵)。對(duì)于1:N聯(lián)系“聘用”,可以在“教師”模式中加入系編號(hào)和聘期兩個(gè)屬性(系編號(hào)為外鍵);對(duì)于1:N聯(lián)系“開設(shè)”,可以在“課程”模式中加入系編號(hào)(系編號(hào)為外鍵)。這樣第一步得到的三個(gè)模式改變成如下形式(注意:外鍵通常使用波浪線表示):系(系編號(hào),系名,電話,主管人的教工號(hào))教師(教工號(hào),姓名,性別,職稱,系編號(hào),聘期)課程(課程號(hào),課程名,學(xué)分,系編號(hào))第三步:對(duì)于M:N聯(lián)系“任教”,則生成一個(gè)新的關(guān)系模式:任教(教工號(hào),課程號(hào),教材)這樣,轉(zhuǎn)換成的四個(gè)關(guān)系模式如下:系(系編號(hào),系名,電話,主管人的教工號(hào))教師(教工
18、號(hào),姓名,性別,職稱,系編號(hào),聘期)課程(課程號(hào),課程名,學(xué)分,系編號(hào))任教(教工號(hào),課程號(hào),教材)2采用ER模型的邏輯設(shè)計(jì)步驟1)導(dǎo)出初始關(guān)系模式集:把概念設(shè)計(jì)的結(jié)果(即全局ER模型)轉(zhuǎn)換成初始關(guān)系模式集。2)規(guī)范化處理3)模式評(píng)價(jià)4)模式修正5)設(shè)計(jì)外模式第三章 關(guān)系模式設(shè)計(jì)理論一、關(guān)系模式的設(shè)計(jì)準(zhǔn)則1數(shù)據(jù)冗余:同一個(gè)數(shù)據(jù)在系統(tǒng)中多次重復(fù)出現(xiàn)。2關(guān)系模式設(shè)計(jì)不當(dāng)引起的異常問題:數(shù)據(jù)冗余、操作異常(包括修改異常、插入異常和刪除異常)3關(guān)系模式的非形式化設(shè)計(jì)準(zhǔn)則1)關(guān)系模式的設(shè)計(jì)應(yīng)盡可能只包含有直接聯(lián)系的屬性,不要包含有間接聯(lián)系的屬性。也就是,每個(gè)關(guān)系模式應(yīng)只對(duì)應(yīng)于一個(gè)實(shí)體類型或一個(gè)聯(lián)系類型。
19、2)關(guān)系模式的設(shè)計(jì)應(yīng)盡可能使得相應(yīng)關(guān)系中不出現(xiàn)插入異常、刪除和修改等操作異?,F(xiàn)象。3)關(guān)系模式的設(shè)計(jì)應(yīng)盡可能使得相應(yīng)關(guān)系中避免放置經(jīng)常為空值的屬性。4)關(guān)系模式的設(shè)計(jì)應(yīng)盡可能使得關(guān)系的等值連接在主鍵和外鍵的屬性上進(jìn)行,并且保證以后不會(huì)生成額外的元組。4習(xí)慣使用的一些符號(hào):1)英文字母表首部的大寫字母“A,B,C,”表示單個(gè)的屬性。2)英文字母表尾部的大寫字母“,U,V,W,X,Y,Z”表示屬性集。3)大寫字母R表示關(guān)系模式,小寫字母r表示其關(guān)系。4)關(guān)系模式的簡(jiǎn)化表示方法:R(A,B,C,)或R(ABC)5)屬性集X和Y的并集簡(jiǎn)寫為XY。二、函數(shù)依賴1函數(shù)依賴(FD)的定義:設(shè)有關(guān)系模式R(U
20、),X和Y是屬性集U的子集,函數(shù)依賴是形成XY的一個(gè)命題,只要r是R的當(dāng)前關(guān)系,對(duì)r中任意兩個(gè)元組t和s,都有tX=sX蘊(yùn)涵tY=sY,那么稱FD XY在關(guān)系模式R(U)中成立。說(shuō)明: 1)tX表示元組t在屬性集X上的值,其余類同。 2)XY讀作“X函數(shù)決定Y”或“Y函數(shù)依賴于X”。 3)FD是對(duì)關(guān)系模式R的一切可能的關(guān)系r定義的。對(duì)于當(dāng)前關(guān)系r的任意兩個(gè)元組,如果X值相同,則要求Y值也相同,即有一個(gè)X值就有一個(gè)Y值與之對(duì)應(yīng),或者說(shuō)Y值由X值決定。3FD的邏輯蘊(yùn)涵:設(shè)F是在關(guān)系模式R上成立的函數(shù)依賴的集合,XY是一個(gè)函數(shù)依賴。如果對(duì)于R的每個(gè)滿足F的關(guān)系r也滿足XY,那么稱F邏輯蘊(yùn)涵XY,記為
21、F|=XY。4設(shè)F是函數(shù)依賴集,被F邏輯蘊(yùn)涵的函數(shù)依賴全體構(gòu)成的集合,稱為函數(shù)依賴集F的閉包,記為F+。即F+=XY | F|=XY 5FD的推理規(guī)則(Armstrong公理)設(shè)U是關(guān)系模式R的屬性集,F(xiàn)是R上成立的只涉及到U中屬性的函數(shù)依賴集。7對(duì)于FD XY,如果YX,那么稱XY是一個(gè)“平凡的FD”,否則稱為“非平凡的FD”。通常研究非平凡FD。例:XX,X, ,XYX都是平凡函數(shù)依賴;XXY則是非平凡函數(shù)依賴。9屬性集的閉包10設(shè)F是屬性集U上的FD集,X上U的子集,那么(相對(duì)于)屬性集X的閉包用X+表示,它是一個(gè)從F集使用FD推理規(guī)則推出的所有滿足XA的屬性A的集合:X+=屬性A |
22、F|=XA11XY能用FD推理規(guī)則推出的充分必要條件是Y X+,從而避開求F+,使問題得到簡(jiǎn)化。13如果關(guān)系模式R(U)上的兩個(gè)函數(shù)依賴集F和G,有F+=G+,則稱F和G是等價(jià)的函數(shù)依賴集。三、關(guān)系模式的分解特性示。四、范式1范式:衡量關(guān)系模式好壞的標(biāo)準(zhǔn)。2數(shù)據(jù)庫(kù)設(shè)計(jì)中最常用的是3NF和BCNF。3第一范式(1NF):如果關(guān)系模式R的每個(gè)關(guān)系r的屬性值都是不可分的原子值,那么稱R是第一范式的模式。滿足1NF的關(guān)系稱為規(guī)范化的關(guān)系,否則稱為非規(guī)范化的關(guān)系。1NF是關(guān)系模式應(yīng)具備的最起碼的條件。4局部依賴和完全依賴:對(duì)于FD WA,如果存在XW有XA成立,那么稱WA是局部依賴(A局部依賴于W);否
23、則稱WA是完全依賴。5主屬性和非主屬性:如果A是關(guān)系模式R的候選鍵中的屬性,那么稱A是R的主屬性;否則稱A是R的非主屬性。6第二范式(2NF):如果關(guān)系模式是1NF,且每個(gè)非主屬性完全函數(shù)依賴于候選鍵,那么稱R是第二范式(2NF)的模式。7分解成2NF模式集的算法:設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FD XZ,并且Z是非主屬性和XW,那么WZ就是一個(gè)局部依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式:R1(XZ),主鍵是X;R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(參照R1)。如果R1和R2還不是2NF,則重復(fù)上述過(guò)程,一直到數(shù)據(jù)庫(kù)模式中的每一個(gè)關(guān)系模式都是2NF為止。8如果XY,YA,且YX和
24、AY,那么稱XA是傳遞依賴(A傳遞依賴于X)。9第三范式(3NF):如果關(guān)系模式R是2NF,且每個(gè)非主屬性都不傳遞依賴于R的候選鍵,那么稱R是第三范式(3NF)的模式。10分解成3NF模式集的算法:設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FD XZ。并且Z是非主屬性,ZX,X不是候選鍵,這樣WZ就是一個(gè)傳遞依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式:R1(XZ),主鍵是X;R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(參照R1)。如果R1和R2還不是3NF,則重復(fù)上述過(guò)程,一直到數(shù)據(jù)庫(kù)模式中的每一個(gè)關(guān)系模式都是3NF為止。11如果R是3NF模式,那么R也是2NF模式。如果R是2NF模式,那么R也是1N
25、F模式。12BC范式(BCNF):如果關(guān)系模式R是1NF,且每個(gè)屬性都不傳遞依賴于R的候選鍵,那么稱R是BCNF的模式。13如果R是BCNF模式,那么R也是3NF模式。14分解成BCNF模式集的算法能保持無(wú)損分解,但不一定能保持FD集。而分解成3NF模式集的算法既能保持無(wú)損分解,又能保持FD集。15關(guān)系模式由1NF分解為2NF,消除了非主屬性對(duì)鍵的局部函數(shù)依賴;由2NF分解為3NF,消除了非主屬性對(duì)鍵的傳遞函數(shù)依賴;而BCNF則消除了每一屬性對(duì)鍵的傳遞函數(shù)依賴。16關(guān)系模式設(shè)計(jì)理論主要用于數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)過(guò)程中。第四章 關(guān)系運(yùn)算要求、目標(biāo):一、簡(jiǎn)介1關(guān)系模型的三個(gè)組成部分:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操縱和
26、數(shù)據(jù)完整性規(guī)則。2數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)庫(kù)中全部數(shù)據(jù)及其相互聯(lián)系都被組織成“關(guān)系”(二維表格)的形式。關(guān)系模型基本的數(shù)據(jù)結(jié)構(gòu)是關(guān)系。3數(shù)據(jù)操縱:關(guān)系模型提供一組完備的高級(jí)關(guān)系運(yùn)算,以支持對(duì)數(shù)據(jù)庫(kù)的各種操作。關(guān)系運(yùn)算分成關(guān)系代數(shù)和關(guān)系演算兩類。4數(shù)據(jù)完整性規(guī)則:數(shù)據(jù)庫(kù)中數(shù)據(jù)必須滿足實(shí)體完整性、參照完整性和用戶定義的完整性等三類完整性規(guī)則。5關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)操縱語(yǔ)言(DML)的語(yǔ)句分成查詢語(yǔ)句和更新語(yǔ)句兩大類。查詢語(yǔ)句用于描述用戶的各種檢索要求;更新語(yǔ)句用于描述插入、刪除、修改等操作。前者是基礎(chǔ)。6關(guān)系查詢語(yǔ)言分兩類:關(guān)系代數(shù)語(yǔ)言(查詢操作以集合操作為基礎(chǔ))和關(guān)系演算語(yǔ)言(查詢操作以謂詞演算為基礎(chǔ))S2=
27、1答案:RS10自然連接:公共屬性只出現(xiàn)一次的等值(公共屬性值全部相等)連接。記為:RS一般自然連接使用在R和S有公共屬性的情況中。如果兩個(gè)關(guān)系沒有公共屬性,那么其自然連接就轉(zhuǎn)化為笛卡兒積操作。12關(guān)系代數(shù)表達(dá)式:由五個(gè)基本操作經(jīng)過(guò)有限次復(fù)合的式子稱為代數(shù)表達(dá)式。這種表達(dá)式的運(yùn)算結(jié)果仍是一個(gè)關(guān)系??梢杂藐P(guān)系代數(shù)表達(dá)式表示各種數(shù)據(jù)查詢操作。例:教學(xué)數(shù)據(jù)庫(kù)中的四個(gè)關(guān)系如下:教師關(guān)系T(T#,TNAME,TITLE)課程關(guān)系C(C#,CNAME,T#)學(xué)生關(guān)系S(S#,SNAME,AGE,SEX)選課關(guān)系SC(S#,C#,SCORE)使用關(guān)系代數(shù)表達(dá)式表達(dá)下列每個(gè)查詢語(yǔ)句。1) 檢索學(xué)習(xí)課程號(hào)為C2
28、課程的學(xué)生學(xué)號(hào)與成績(jī)。S#,SCORE(C#=C2 (SC)或1,3(2=C2 (SC)2)檢索學(xué)習(xí)課程號(hào)為C2課程的學(xué)生學(xué)號(hào)和姓名。S#,SNAME(C#=C2 (SSC)3)檢索至少選修LIU老師所授課程中一門課程的學(xué)生學(xué)號(hào)與姓名。S#,SNAME(TNAME=LIU (SSCCT)4)檢索選修課程號(hào)為C2或C4課程的學(xué)生學(xué)號(hào)。S#(C#=C2 C#=C4 (SC)5)檢索至少選修課程號(hào)為C2和C4課程的學(xué)生學(xué)號(hào)。1(1=4 2=C2 5=C4 (SCSC)6)檢索不學(xué)C2課程的學(xué)生姓名與年齡。SNAME,AGE(S)-SNAME,AGE(C#=C2 (SSC)7)檢索學(xué)習(xí)全部課程的學(xué)生姓
29、名。SNAME(S(S#,C#(SC)C#(C)8)檢索所學(xué)課程包含學(xué)號(hào)為S3學(xué)生所學(xué)課程的學(xué)生學(xué)號(hào)。S#,C#(SC)C#(S#=S3 (SC)總結(jié):查詢語(yǔ)句的關(guān)系代數(shù)表達(dá)式的一般形式是:(RS)或(RS)即首先把查詢涉及到的關(guān)系取來(lái),執(zhí)行笛卡兒積或自然連接操作得到一張大的表格,然后對(duì)大表格執(zhí)行水平分割(選擇操作)和垂直分割(投影操作)。但這種形式不適用于否定或全部值的查詢。這時(shí)要用差或除法操作。13外連接:如果R和S做自然連接時(shí),把原該舍棄的元組也保留在新關(guān)系中,同時(shí)在這些元組新增加的屬性上填上空值(Null),這種操作稱為“外連接”操作。14左外連接:如果R和S做自然連接時(shí),只把R中原該
30、舍棄的元組放到新關(guān)系中,那么這種操作稱為“左外連接”操作。15右外連接:如果R和S做自然連接時(shí),只把S中原該舍棄的元組放到新關(guān)系中,那么這種操作稱為“右外連接”操作。16外部并:兩個(gè)關(guān)系R和S做并操作時(shí),如果它們的關(guān)系模式不同,構(gòu)成的新關(guān)系的屬性由R和S的所有屬性組成(公共屬性只取一次),新關(guān)系的元組由屬于R或?qū)儆赟的元組構(gòu)成,同時(shí)元組在新增加的屬性上填上空值,那么這種操作稱為“外部并”操作。三、關(guān)系演算關(guān)系演算又可分為元組關(guān)系演算和域關(guān)系演算,前者以元組為變量,后者以屬性(域)為變量。四、關(guān)系代數(shù)表達(dá)式的優(yōu)化1目的:提高系統(tǒng)效率。2三條啟發(fā)式規(guī)則:1)盡可能早地執(zhí)行選擇操作;2) 盡可能早地
31、執(zhí)行投影操作;3) 避免直接做笛卡兒積,把笛卡兒積操作之前和之后的一連串選擇和投影合并起來(lái)一起做。第五章 SQL語(yǔ)言一、SQL簡(jiǎn)介1SQL:結(jié)構(gòu)化查詢語(yǔ)言,關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。2SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)基本上也是三級(jí)結(jié)構(gòu),但術(shù)語(yǔ)與傳統(tǒng)的關(guān)系模型術(shù)語(yǔ)不同。在SQL中,關(guān)系模式稱為“基本表”,存儲(chǔ)模式稱為“存儲(chǔ)文件”,子模式稱為“視圖”,元組稱為“行”,屬性稱為“列”。SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)要點(diǎn):1)一個(gè)SQL模式是表和約束的集合。2)一個(gè)表由行集構(gòu)成,一行是列的序列,每列對(duì)應(yīng)一個(gè)數(shù)據(jù)項(xiàng)。3)表有三種類型:基本表、視圖和導(dǎo)出表?;颈恚簩?shí)際存儲(chǔ)在數(shù)據(jù)庫(kù)中的表。視圖:由若干基本
32、表或其他視圖構(gòu)成的表的定義。導(dǎo)出表:執(zhí)行了查詢時(shí)產(chǎn)生的表。4)一個(gè)基本表可以跨一個(gè)或多個(gè)存儲(chǔ)文件,一個(gè)存儲(chǔ)文件也可以存放一個(gè)或多個(gè)基本表。每個(gè)存儲(chǔ)文件與外部存儲(chǔ)器上一個(gè)物理文件對(duì)應(yīng)。5)用戶可以用SQL語(yǔ)句對(duì)基本表和視圖進(jìn)行查詢等操作。在用戶看來(lái),兩者一樣,都是表。6)SQL語(yǔ)句可嵌在C、FORTRAN等主語(yǔ)言的程序中使用,也可在交互環(huán)境下供終端用戶使用。3SQL的組成核心SQL主要有四個(gè)部分:1)數(shù)據(jù)定義語(yǔ)言,即DDL,用于定義SQL模式、基本表、視圖、索引等結(jié)構(gòu)。2)數(shù)據(jù)操縱語(yǔ)言,即SQL DML。數(shù)據(jù)操縱分成數(shù)據(jù)查詢和數(shù)據(jù)更新兩類。而數(shù)據(jù)更新又分成插入、刪除和修改三種操作。3)嵌入式SQ
33、L語(yǔ)言的使用規(guī)定4)數(shù)據(jù)控制語(yǔ)言,即SQL DCL,這一部分包括對(duì)基本表和視圖的授權(quán)、完整性規(guī)則的描述、事務(wù)控制等內(nèi)容。4SQL的特點(diǎn)1)SQL具有十分靈活和強(qiáng)大的查詢功能。2)SQL不是一個(gè)應(yīng)用開發(fā)語(yǔ)言,它只提供對(duì)數(shù)據(jù)庫(kù)的操作功能。但SQL既可作為交互式語(yǔ)言獨(dú)立使用,也可作為子語(yǔ)言嵌入在主語(yǔ)言中使用,成為應(yīng)用開發(fā)語(yǔ)言的一部分。3)SQL是國(guó)際標(biāo)準(zhǔn)語(yǔ)言,有利于各種數(shù)據(jù)庫(kù)之間交換數(shù)據(jù),有利于程序的移植,有利于實(shí)現(xiàn)高度的數(shù)據(jù)獨(dú)立性,有利于實(shí)現(xiàn)標(biāo)準(zhǔn)化。4)SQL完成核心功能只用9個(gè)英語(yǔ)動(dòng)詞,語(yǔ)法結(jié)構(gòu)接近英語(yǔ),容易學(xué)習(xí)和使用。二、SQL的數(shù)據(jù)定義1SQL模式的創(chuàng)建在SQL中,一個(gè)SQL模式定義為基本表
34、的集合。一個(gè)SQL模式由模式名和模式擁有者的用戶名或賬號(hào)來(lái)確定,并包含模式中每一個(gè)元素(基本表、視圖、索引等)的定義。創(chuàng)建SQL模式,就是定義了一個(gè)存儲(chǔ)空間。創(chuàng)建模式語(yǔ)法:CREATE SCHEMA AUTHORIZATION 2SQL模式的撤銷語(yǔ)法:DROP SCHEMA CASCADE | RESTRICT說(shuō)明:CASCADE(級(jí)聯(lián)式)方式:執(zhí)行DROP語(yǔ)句時(shí),把SQL模式及其下屬的基本表、視圖、索引等所有元素全部撤銷。 RESTRICT(約束式)方式:只有當(dāng)SQL模式中沒有任何下屬元素時(shí),才能撤銷SQL模式,否則拒絕執(zhí)行DROP語(yǔ)句。3SQL的基本數(shù)據(jù)類型、秒,形為HH:MM:SS4基本
35、表結(jié)構(gòu)的創(chuàng)建語(yǔ)法:CREATE TABLE (,)說(shuō)明:完整性約束常用以下幾種子句:主鍵子句(PRIMARY KEY)、外鍵子句(FOREIGN KEY)等NOT NULL:表示不允許某一列的值為空值例:對(duì)于教學(xué)數(shù)據(jù)庫(kù)中的四個(gè)關(guān)系:教師關(guān)系T(T#,TNAME,TITLE)課程關(guān)系C(C#,CNAME,T#)學(xué)生關(guān)系S(S#,SNAME,AGE,SEX)選課關(guān)系SC(S#,C#,SCORE)創(chuàng)建基本表。CREATE TABLE T (T# CHAR(4) NOT NULL,TNAME CHAR(8) NOT NULL,TITLE CHAR(10),PRIMARY KEY(T#)CREATE T
36、ABLE C(C# CHAR(4) NOT NULL, CNAME CHAR(10) NOT NULL, T# CHAR(4), PRIMARY KEY(C#), FOREIGN KEY(T#) REFERENCES T(T#)CREATE TABLE S(S# CHAR(4) NOT NULL,SNAME CHAR(8) NOT NULL,AGE SMALLINT,SEX CHAR(2),PRIMARY KEY(S#)CREATE TABLE SC(S# CHAR(4),C# CHAR(4), SCORE SMALLINT,PRIMARY KEY(S#,C#),F(xiàn)OREIGN KEY(S#)
37、 REFERENCES S(S#),F(xiàn)OREIGN KEY(C#) REFERENCES C(C#)5基本表結(jié)構(gòu)的修改1)增加新的列語(yǔ)法:ALTER TABLE ADD 2)刪除原有的列語(yǔ)法:ALTER TABLE DROP CASCADE | RESTRICT說(shuō)明:CASCADE方式表示在基本表中刪除某列時(shí),所有引用到該列的視圖和約束也要一起自動(dòng)地被刪除;RESTRICT方式表示在沒有視圖或約束引用該屬性時(shí),才能在基本表中刪除該列,否則拒絕刪除。3)修改原有列的類型、寬度語(yǔ)法:ALTER TABLE MODIFY 6基本表的撤銷語(yǔ)法:DROP TABLE CASCADE | RESTRICT
38、7索引的創(chuàng)建語(yǔ)法:CREATE UNIQUE INDEX ON ()說(shuō)明:UNIQUE表示每個(gè)索引值對(duì)應(yīng)惟一的數(shù)據(jù)記錄。 索引在用戶查詢時(shí)會(huì)自動(dòng)起作用。 一個(gè)索引鍵可以對(duì)應(yīng)多個(gè)列。索引排列時(shí)可以升序,也可以降序,升序排列用ASC表示,降序排列用DESC表示,默認(rèn)時(shí)表示升序。8索引的撤銷語(yǔ)法:DROP INDEX 三、SQL的數(shù)據(jù)查詢1SELECT查詢語(yǔ)句句型在關(guān)系代數(shù)中最常用的式子是下列表達(dá)式:A1,An(F(R1Rm)這里,R1、Rm為關(guān)系,F(xiàn)是公式,A1、An為屬性。與該表達(dá)式對(duì)應(yīng),SQL設(shè)計(jì)了SELECTFROMWHERE句型:SELECT A1,AnFROM R1,RmWHERE F注
39、意:1)在學(xué)習(xí)時(shí),應(yīng)把SELECT語(yǔ)句和關(guān)系代數(shù)表達(dá)式聯(lián)系起來(lái)考慮問題。2)在WHERE子句的條件表達(dá)式F中可使用下列運(yùn)算符:比較運(yùn)算符:、 =、 、 =、 =、 或!=邏輯運(yùn)算符:AND、OR、NOT集合成員資格運(yùn)算符:IN、NOT IN謂詞:EXISTS、ALL、SOME聚合函數(shù):AVG、MIN、MAX、SUM、COUNTF中運(yùn)算對(duì)象還可以是另一個(gè)SELECT語(yǔ)句,即SELECT語(yǔ)句可以嵌套。2SELECT語(yǔ)句的使用技術(shù)SELECT使用時(shí)有三種寫法:連接查詢、嵌套查詢和帶存在量詞的嵌套查詢。例:針對(duì)前面使用的教學(xué)數(shù)據(jù)庫(kù),檢索學(xué)習(xí)課程號(hào)為C2課程的學(xué)生學(xué)號(hào)與姓名。第一種寫法(連接查詢):SE
40、LECT S.S#,SNAMEFROM S,SCWHERE S.S#=SC.S# AND C#=C2第二種寫法(嵌套查詢):SELECT S#,SNAMEFROM SWHERE S# IN(SELECT S#FROM SCWHERE C#=C2)第三種寫法(使用存在量詞的嵌套查詢):SELECT S#,SNAMEFROM SWHERE EXISTS(SELECT *FROM SCWHERE SC.S#=S.S# AND C#=C2)例:對(duì)于教學(xué)數(shù)據(jù)庫(kù)中四個(gè)基本表T、C、S、SC,用SELECT語(yǔ)句表示下面查詢。4) 檢索學(xué)習(xí)課程號(hào)為C2課程的學(xué)生學(xué)號(hào)與成績(jī)。SELECT S#,SCOREFRO
41、M SCWHERE C#=C22)檢索學(xué)習(xí)課程號(hào)為C2課程的學(xué)生學(xué)號(hào)和姓名。見上例3)檢索至少選修LIU老師所授課程中一門課程的學(xué)生學(xué)號(hào)與姓名。SELECT S.S#,SNAMEFROM S,SC,C,TWHERE S.S#=SC.S# AND SC.C#=C.C# AND C.T#=T.T# AND TNAME=LIU4)檢索選修課程號(hào)為C2或C4課程的學(xué)生學(xué)號(hào)。SELECT S#FROM SCWHERE C#=C2 OR C#=C45)檢索至少選修課程號(hào)為C2和C4課程的學(xué)生學(xué)號(hào)。SELECT X.S#FROM SC AS X,SC AS YWHERE X.S#=Y.S# AND X.C#
42、=C2 AND Y.C#=C46)檢索不學(xué)C2課程的學(xué)生姓名與年齡。SELECT SNAME,AGEFROM SWHERE S# NOT IN(SELECT S#FROM SCWHERE C#=C2)7)檢索學(xué)習(xí)全部課程的學(xué)生姓名。(在表S中找學(xué)生,在C中不存在一門課程,這個(gè)學(xué)生沒有學(xué)。)SELECT SNAMEFROM SWHERE NOT EXISTS(SELECT *FROM CWHERE NOT EXISTS(SELECT *FROM SCWHERE SC.S#=S.S# AND SC.C#=C.C#)8)檢索所學(xué)課程包含學(xué)號(hào)為S3學(xué)生所學(xué)課程的學(xué)生學(xué)號(hào)。(在SC表中找一個(gè)學(xué)生,不存在
43、S3學(xué)的一門課,該學(xué)生沒有學(xué)。)SELECT DISTINCT S#FROM SC AS XWHERE NOT EXISTS(SELECT *FROM SC AS YWHERE Y.S#=S3AND NOT EXISTS(SELECT *FROM SC AS ZWHERE Z.S#=X.S# AND Z.C#=Y.C#)注:DISTINCT表示去掉重復(fù)值。3聚合函數(shù)COUNT(*):計(jì)算元組個(gè)數(shù)COUNT() 對(duì)一列中的值計(jì)算個(gè)數(shù)SUM() 求某一列值的總和(此列值為數(shù)值型)AVG() 求某一列值的平均值(此列值為數(shù)值型)MAX() 求某一列值的最大值MIN() 求某一列值的最小值說(shuō)明:列名前
44、均可加DISTINCT,表示去掉重復(fù)值。例1:求男生的總?cè)藬?shù)和平均年齡。SELECT COUNT(*),AVG(AGE)FROM SWHERE SEX=男例2:統(tǒng)計(jì)選修了課程的學(xué)生人數(shù)。SELECT COUNT(DISTINCT S#)FROM SC4SELECT語(yǔ)句完整的句法SELECT FROM WHERE GROUP BY HAVING ORDER BY ,說(shuō)明:表示其中的內(nèi)容根據(jù)需要可以省略。|表示二選一。 各子句的作用:SELECT子句用于指定輸出的內(nèi)容;FROM子句用于指定要檢索的數(shù)據(jù)的來(lái)源表;WHERE子句稱為“行條件子句”,用于指定對(duì)元組的選取條件;GROUP BY子句稱為“分
45、組子句”,作用是指定對(duì)元組進(jìn)行分類后再檢索;HAVING子句稱為“組條件子句”,用于指定對(duì)分類后的元組的選取條件;ORDER BY子句稱為“排序子句”,作用是對(duì)檢索到的元組進(jìn)行排序。整個(gè)語(yǔ)句的執(zhí)行過(guò)程為:1)讀取FROM子句中基本表、視圖的數(shù)據(jù),執(zhí)行笛卡兒積操作。2)選取滿足WHERE子句中給出的條件表達(dá)式的元組。3)按GROUP子句中指定列的值分組,同時(shí)提取滿足HAVING子句中組條件表達(dá)式的那些組。4)按SELECT子句中給出的列名或列表達(dá)式求值輸出。5)ORDER子句對(duì)輸出的目標(biāo)表進(jìn)行排序,按附加說(shuō)明ASC升序排列,或按DESC降序排列。例1:統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù)。SELECT C
46、OUNT(S#)FROM SCGROUP BY C#例2:統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù),要求只查詢出選修人數(shù)超過(guò)50人的結(jié)果。SELECT COUNT(S#)FROM SCGROUP BY C#HAVING COUNT(S#)50例3:檢索每名學(xué)生的學(xué)號(hào)和年齡,查詢結(jié)果按年齡降序排列,年齡相同按學(xué)號(hào)升序排列。SELECT S#,AGEFROM SORDER BY AGE DESC,S# ASC5.SELECT子句的具體規(guī)定SELECT ALL | DISTINCT 列名或列表達(dá)式序列|*說(shuō)明:1)DISTINCT選項(xiàng)保證重復(fù)的行將從結(jié)構(gòu)中去除;而ALL選項(xiàng)是默認(rèn)的,將保證重復(fù)的行留在結(jié)果中,一般
47、可不必寫出。2)*是對(duì)于在FROM子句中命名表的所有列的簡(jiǎn)寫。3)列表達(dá)式中允許出現(xiàn)+、-、*、/等運(yùn)算符以及列名和常數(shù)、聚合函數(shù)等。例1:檢索男同學(xué)選修的課程的課程號(hào)。SELECT DISTINCT C#FROM S,SCWHERE S.S#=SC.S# AND SEX=男例2:檢索所有的學(xué)生信息。SELECT *FROM S例3:檢索每個(gè)學(xué)生的學(xué)號(hào)和出生年份。SELECT S#,2008-AGEFROM S6列和基本表的改名操作有時(shí),一個(gè)基本表在SELECT語(yǔ)句中多次出現(xiàn),即這個(gè)表被多次調(diào)用,為區(qū)別不同的引用,應(yīng)給每次的引用加上不同的名字。當(dāng)然,除此情況之外,也可以給任何一個(gè)表起別名。但要
48、注意:一旦給表起了別名,在該語(yǔ)句中,凡是引用該表名時(shí),必須用別名而不能用原表名。有時(shí),用戶也可以要求輸出的列名與基本表中列名不一致,可在SELECT子句用“舊名 AS 新名”形式改名。其中AS可以省略。例:檢索每個(gè)學(xué)生的姓名和出生年份,輸出的列名分別為STUDENT_NAME和BIRTH_YEAR。SELECT S# AS STUDENT_NAME,2008-AGE AS BIRTH_YEARFROM S7條件表達(dá)式中的比較操作1)算術(shù)比較操作:常用運(yùn)算符有、=、=、=、或!=NOT BETWEENAND用來(lái)查找(不)在給定范圍內(nèi)的數(shù)據(jù),下限在前,上限在后,包括上、下限。例:檢索1820歲的學(xué)
49、生姓名。SELECT SNAMEFROM SWHERE AGE=18 AND AGE=20或:SELECT SNAMEFROM SWHERE AGE BETWEEN 18 AND 202)字符串的匹配操作語(yǔ)法: NOT LIKE 說(shuō)明:匹配模式中常使用兩個(gè)通配符:%:與零個(gè)或多個(gè)字符組成的字符串匹配。_:與單個(gè)字符匹配。例:檢索姓名以字符D打頭的學(xué)生姓名。SELECT SNAMEFROM SWHERE SNAME LIKE D%轉(zhuǎn)義字符:為使字符串中包含特殊字符(即%和_),允許定義轉(zhuǎn)義字符。轉(zhuǎn)義字符緊靠特殊字符并放在它前面,表示該特殊字符被當(dāng)成普通字符。使用ESCAPE定義轉(zhuǎn)義字符。例:LI
50、KE ab%cd% ESCAPE 匹配所有以ab%cd開頭的字符串。LIKE abcd% ESCAPE 匹配所有以abcd開頭的字符串。3)空值的比較操作使用IS NOT NULL來(lái)比較。例:檢索年齡為空值的學(xué)生姓名。SELECT SNAMEFROM SWHERE AGE IS NULL4)集合成員資格的比較語(yǔ)法:NOT IN ()例1:檢索年齡分別是18、20、21歲的學(xué)生姓名。SELECT SNAME FROM SWHERE AGE IN(18,20,21)例2:檢索男同學(xué)選修課程的課程號(hào)。SELECT DISTINCT C#FROM SCWHERE S# IN(SELECT S# FRO
51、M S WHERE SEX=男)5)集合成員的算術(shù)比較語(yǔ)法:元組 ALL|SOME|ANY(集合)說(shuō)明:ALL表示左邊那個(gè)元組與右邊集合中每一個(gè)元組滿足運(yùn)算;ANY和SOME含義相同,表示左邊那個(gè)元組與右邊集合中至少一個(gè)元組滿足運(yùn)算。例1:檢索學(xué)習(xí)C2課程的學(xué)生學(xué)號(hào)和姓名。SELECT S#,SNAME FROM SWHERE S# = SOME(SELECT S#FROM SCWHERE C#=C2)例2:檢索不學(xué)C2課程的學(xué)生姓名與年齡。SELECT SNAME,AGEFROM SWHERE S#ALL(SELECT S#FROM SCWHERE C#=C2)6)集合空否的測(cè)試使用NOTEXISTS。見前面例子。四、數(shù)據(jù)更新
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 年度B2B電子商務(wù)戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 年度高分子復(fù)合材料競(jìng)爭(zhēng)策略分析報(bào)告
- 2025個(gè)人公司股權(quán)轉(zhuǎn)讓合同范本:股權(quán)分割與權(quán)益調(diào)整4篇
- 2024離婚財(cái)產(chǎn)分割協(xié)議公證與遺產(chǎn)分割
- 2024蔬菜大棚溫室租賃與農(nóng)業(yè)科技研發(fā)服務(wù)合同3篇
- 課程設(shè)計(jì)要不要上課呢
- 《電子商務(wù)概論》課件
- 增加頂管施工方案
- 二零二五版民法典離婚協(xié)議書樣本與專業(yè)律師服務(wù)協(xié)議4篇
- 2025年暑期學(xué)生兼職工作質(zhì)量及效果評(píng)估協(xié)議3篇
- 長(zhǎng)亭送別完整版本
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡(jiǎn)版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲(chǔ)系統(tǒng)解決方案
- 《銷售心理學(xué)培訓(xùn)》課件
- 智能養(yǎng)老院視頻監(jiān)控技術(shù)方案
- 2024年安徽省公務(wù)員錄用考試《行測(cè)》真題及解析
- 豐順縣鄉(xiāng)鎮(zhèn)集中式飲用水水源地基礎(chǔ)狀況調(diào)查和風(fēng)險(xiǎn)評(píng)估報(bào)告
- 無(wú)人駕駛航空器安全操作理論復(fù)習(xí)測(cè)試附答案
- 2024年山東省青島市中考語(yǔ)文試卷(附答案)
- 職業(yè)技術(shù)學(xué)?!犊缇畴娮由虅?wù)物流與倉(cāng)儲(chǔ)》課程標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論