




版權(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)基本概念要求、目標(biāo):了解和掌握數(shù)據(jù)管理技術(shù)的發(fā)展階段,數(shù)據(jù)描述的術(shù)語(yǔ),數(shù)據(jù)抽象的四個(gè)級(jí)別,數(shù)據(jù)庫(kù)管理系統(tǒng)的功能,數(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ī)、有組織的、統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。
2、4 數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS):是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,它為用戶或應(yīng)用程序提供訪問(wèn)DB的方法,包括DB的建立、查詢、更新及各種數(shù)據(jù)控制。5 數(shù)據(jù)庫(kù)系統(tǒng)(DBS):是實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù)、方便多用戶訪問(wèn)的計(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ū)傩约?。以上?/p>
3、念均有類型和值之分。3 邏輯設(shè)計(jì)中的術(shù)語(yǔ):1) 字段(數(shù)據(jù)項(xiàng)):標(biāo)記實(shí)體屬性的命位稱為字段或數(shù)據(jù)項(xiàng)。2) 記錄:字段的有序集合。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)系稱為“
4、一對(duì)一聯(lián)系”,記為“1:1”。7 一對(duì)多聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體與實(shí)體集E2中任意個(gè)(零個(gè)或多個(gè))實(shí)體間有聯(lián)系,而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í)別定義了四種模型:概念模型、邏輯模型、外部模型和
5、部模型。3 概念模型:表達(dá)用戶需求觀點(diǎn)的數(shù)據(jù)全局邏輯結(jié)構(gòu)的模型。4 邏輯模型:表達(dá)計(jì)算機(jī)實(shí)現(xiàn)觀點(diǎn)的DB全局邏輯結(jié)構(gòu)的模型。5 外部模型:表達(dá)用戶使用觀點(diǎn)的DB局部邏輯結(jié)構(gòu)的模型。6 部模型:表達(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ì)其部模型。通常分為概念設(shè)計(jì)、邏輯設(shè)計(jì)(2和3步)和物理設(shè)計(jì)三個(gè)階段。8 常用的概念模型是實(shí)體聯(lián)系(ER)模型,ER模型主要用ER圖來(lái)表示。9 邏
6、輯模型的分類:層次模型、網(wǎng)狀模型、關(guān)系模型等。10 層次模型:用樹(shù)型(層次)結(jié)構(gòu)表示實(shí)體及實(shí)體間聯(lián)系的數(shù)據(jù)模型。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 外部模型中的模式稱為視
7、圖。17 三級(jí)模式:從用戶(或應(yīng)用程序)到數(shù)據(jù)庫(kù)之間,DB的數(shù)據(jù)結(jié)構(gòu)描述有三個(gè)層次:1)外模式:用戶與數(shù)據(jù)庫(kù)系統(tǒng)的接口,是用戶用到的那部分?jǐn)?shù)據(jù)的描述。外模式由若干個(gè)記錄類型組成。2)邏輯模式:是數(shù)據(jù)庫(kù)中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述。3)模式:是數(shù)據(jù)庫(kù)在物理存儲(chǔ)方面的描述。注意:外模式是邏輯模式的子集。18 兩級(jí)映像:1)外模式/邏輯模式映像:存在于外模式和邏輯模式之間,用于定義外模式和邏輯模式之間的對(duì)應(yīng)性。2)邏輯模式/模式映像:存在于邏輯模式和模式之間,用于定義邏輯模式和模式之間的對(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)用程
8、序與數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)之間相互獨(dú)立,在修改數(shù)據(jù)結(jié)構(gòu)時(shí),盡可能不修改應(yīng)用程序。分為邏輯數(shù)據(jù)獨(dú)立性和物理數(shù)據(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ù)的模式要修改,即數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)有所變化,那么只要對(duì)邏輯模式/模式映像作相應(yīng)的修改,可以使邏輯模式盡可能保持不變。也就是對(duì)模式的修改盡量不影響邏輯模式,當(dāng)然對(duì)外模式和應(yīng)用程序的影響更小,這樣就認(rèn)為數(shù)據(jù)庫(kù)達(dá)到了物理數(shù)據(jù)獨(dú)立性。四、 數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)1DBMS的主要功能:數(shù)據(jù)庫(kù)的定
9、義功能(DBMS提供DDL定義數(shù)據(jù)庫(kù)的三級(jí)模式、兩級(jí)映像等)、數(shù)據(jù)庫(kù)的操縱功能(DBMS提供DML實(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)用開(kāi)發(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模型要求、目標(biāo):了解和掌握數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)的全過(guò)程,掌握
10、ER模型和關(guān)系模型的基本概念,掌握概念設(shè)計(jì)中ER模型的設(shè)計(jì)方法,掌握邏輯設(shè)計(jì)中ER模型向關(guān)系模型轉(zhuǎn)換的方法。一、數(shù)據(jù)庫(kù)系統(tǒng)生存期1數(shù)據(jù)庫(kù)系統(tǒng)生存期:數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)從開(kāi)始規(guī)劃、設(shè)計(jì)、實(shí)現(xiàn)、維護(hù)到最后被新的系統(tǒng)取代而停止使用的整個(gè)期間。2數(shù)據(jù)庫(kù)系統(tǒng)生存期分七個(gè)階段:規(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)所需要的信息容和用戶對(duì)處理的需求,并以需求說(shuō)明書(shū)的形式確定下來(lái)。5概念設(shè)計(jì)階段:產(chǎn)生反映用戶單位信息需求的概念模型。與硬件和DBMS無(wú)關(guān)。6邏輯設(shè)計(jì)
11、階段:將概念模型轉(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)、數(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)
12、成的集合。聯(lián)系類型:是對(duì)聯(lián)系集中聯(lián)系的定義。一般將聯(lián)系、聯(lián)系集、聯(lián)系類型統(tǒng)稱為聯(lián)系。4 同一個(gè)實(shí)體集部實(shí)體之間的聯(lián)系,稱為一元聯(lián)系;兩個(gè)不同實(shí)體集實(shí)體之間的聯(lián)系,稱為二元聯(lián)系,以此類推。5 屬性:實(shí)體的某一特性稱為屬性。在一個(gè)實(shí)體中,能夠惟一標(biāo)識(shí)實(shí)體的屬性或?qū)傩约Q為實(shí)體標(biāo)識(shí)符。6 ER模型中,方框表示實(shí)體、菱形框表示聯(lián)系、橢圓形框表示屬性、實(shí)體與聯(lián)系、實(shí)體與其屬性、聯(lián)系與其屬性之間用直線連接。實(shí)體標(biāo)識(shí)符下畫(huà)橫線。聯(lián)系的類型要在直線上標(biāo)注。注意:聯(lián)系也有可能存在屬性,但聯(lián)系本身沒(méi)有標(biāo)識(shí)符。例:假設(shè)一個(gè)學(xué)生可選多門課程,而一門課程又有多個(gè)學(xué)生選修,一個(gè)教師可講多門課程,一門課程至多只有一個(gè)教師講
13、授。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)系模型中,字段稱為屬性,字段值稱為屬性值,記錄類型稱為關(guān)系模式。記錄稱為元組,元組的集合稱為關(guān)系或?qū)嵗S袝r(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外鍵:如果模式
14、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ī)化了的二維表格。1)關(guān)系中每一個(gè)屬性值都是不可分解的;2)關(guān)系中不允許出現(xiàn)重復(fù)元組;3)關(guān)系沒(méi)有行序;4)元組中的屬性在理論上也是無(wú)序的,但使用時(shí)按習(xí)慣考慮列的順序。11關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)與更新操作必須遵循三類完整性規(guī)則:實(shí)體完整性規(guī)則、參照完整性規(guī)則、用戶定義的完整性規(guī)則。12實(shí)體完整性規(guī)則:要求關(guān)系中元組在組成主鍵的屬性上不能有空值。13參照完整性規(guī)則
15、:如果屬性集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ī)則在具體使用時(shí),有三點(diǎn)變通:1)外鍵和相應(yīng)的主鍵可以不同名,只要定義在相同值域上即可;2)R1和R2可以是同一個(gè)關(guān)系模式,此時(shí)表示了同一個(gè)關(guān)系中不同元組之間的聯(lián)系;3)外鍵值是否允許空,應(yīng)視具體問(wèn)題而定。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í)
16、體類型的轉(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)系模式的屬性中加入另一個(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í)體類
17、型:系、教師和課程;有四個(gè)聯(lián)系類型:主管、聘用、開(kāi)設(shè)和任教。根據(jù)轉(zhuǎn)換算法,把該圖轉(zhuǎn)換成關(guān)系模式集的步驟如下:MN1111系系編號(hào)系名電話主管開(kāi)設(shè)聘用教師課程任教學(xué)分姓名性別教工號(hào)職稱教材課程號(hào)課程名NN教學(xué)管理的ER圖聘期第一步:把三個(gè)實(shí)體類型轉(zhuǎn)換成三個(gè)關(guān)系模式(注意關(guān)系模式的表示方法):系(系編號(hào),系名,)教師(教工號(hào),性別,職稱)課程(課程號(hào),課程名,學(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)系“開(kāi)設(shè)”,可以在“課程”模式中加入系編號(hào)(系編號(hào)為外鍵)。這樣第一
18、步得到的三個(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))教師(教工號(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)系模
19、式設(shè)計(jì)理論要求、目標(biāo):了解關(guān)系數(shù)據(jù)庫(kù)規(guī)化理論及其在數(shù)據(jù)庫(kù)設(shè)計(jì)中的作用,重點(diǎn)是函數(shù)依賴和式,要求掌握這些概念并能運(yùn)用它們來(lái)進(jìn)行模式分解。一、關(guān)系模式的設(shè)計(jì)準(zhǔn)則1數(shù)據(jù)冗余:同一個(gè)數(shù)據(jù)在系統(tǒng)中多次重復(fù)出現(xiàn)。2關(guān)系模式設(shè)計(jì)不當(dāng)引起的異常問(wèn)題:數(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)系類型。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
20、)關(guān)系模式的設(shè)計(jì)應(yīng)盡可能使得關(guān)系的等值連接在主鍵和外鍵的屬性上進(jìn)行,并且保證以后不會(huì)生成額外的元組。4習(xí)慣使用的一些符號(hào):1)英文字母表首部的大寫(xiě)字母“A,B,C,”表示單個(gè)的屬性。2)英文字母表尾部的大寫(xiě)字母“,U,V,W,X,Y,Z”表示屬性集。3)大寫(xiě)字母R表示關(guān)系模式,小寫(xiě)字母r表示其關(guān)系。4)關(guān)系模式的簡(jiǎn)化表示方法:R(A,B,C,)或R(ABC)5)屬性集X和Y的并集簡(jiǎn)寫(xiě)為XY。二、函數(shù)依賴1函數(shù)依賴(FD)的定義:設(shè)有關(guān)系模式R(U),X和Y是屬性集U的子集,函數(shù)依賴是形成XY的一個(gè)命題,只要r是R的當(dāng)前關(guān)系,對(duì)r中任意兩個(gè)元組t和s,都有tX=sX蘊(yùn)涵tY=sY,那么稱FD X
21、Y在關(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值決定。例:設(shè)關(guān)系模式R(ABCD),在R的關(guān)系中,屬性值間有這樣的聯(lián)系:A值與B值有一對(duì)多聯(lián)系;C值與D值之間有一對(duì)一聯(lián)系。試根據(jù)這些規(guī)則寫(xiě)出相應(yīng)的函數(shù)依賴。BA CD DC2如果XY和YX同時(shí)成立,則可記為:XY3FD的邏輯蘊(yùn)涵:設(shè)F是在關(guān)系模式R上成立的函數(shù)依賴的集合,XY是一個(gè)函數(shù)依賴。如果對(duì)于R
22、的每個(gè)滿足F的關(guān)系r也滿足XY,那么稱F邏輯蘊(yùn)涵XY,記為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ù)依賴集。1) 自反性:若YÍXÍU,則XY在R上成立。2) 增廣性:若XY在R上成立,且ZÍU,則XZYZ在R上成立。3) 傳遞性:若XY和YZ在R上成立,則XZ在R上成立。6FD的其他五條推理規(guī)則:1)合并性:XY,XZ |= XYZ2)分解性:XY,ZÍY |
23、= XZ3)偽傳遞性:XY,WYZ |= WXZ4)復(fù)合性:XY,WZ |= WXYZ5)XY,WZ |= X(W-Y)YZ7對(duì)于FD XY,如果YÍX,那么稱XY是一個(gè)“平凡的FD”,否則稱為“非平凡的FD”。通常研究非平凡FD。例:XX,X, ,XYX都是平凡函數(shù)依賴;XXY則是非平凡函數(shù)依賴。8函數(shù)依賴是關(guān)鍵碼概念的推廣。設(shè)關(guān)系模式R的屬性集是U,X是U的一個(gè)子集。如果XU在R上成立,那么稱X是R的一個(gè)超鍵。如果XU在R上成立,但對(duì)于R的任一真子集X1都有X1U不成立,那么稱X是R的一個(gè)候選鍵。在關(guān)系模式設(shè)計(jì)理論中,鍵通常是指候選鍵。9屬性集的閉包10設(shè)F是屬性集U上的FD集,
24、X上U的子集,那么(相對(duì)于)屬性集X的閉包用X+表示,它是一個(gè)從F集使用FD推理規(guī)則推出的所有滿足XA的屬性A的集合:X+=屬性A | F|=XA11XY能用FD推理規(guī)則推出的充分必要條件是YÍ X+,從而避開(kāi)求F+,使問(wèn)題得到簡(jiǎn)化。12求屬性集X相對(duì)于FD集F的閉包X+的算法:X+=X;do oldX+:=X+; for F中每個(gè)FD YZ do if YÍ X+ then X+:=X+Z;while(X+!=oldX+);例:屬性集U為ABCD,F(xiàn)D集為AB,BC,DB。求A+、(AD)+和(BD)+A+=ABC(AD)+=ABCD(BD)+=BCD13如果關(guān)系模式R(
25、U)上的兩個(gè)函數(shù)依賴集F和G,有F+=G+,則稱F和G是等價(jià)的函數(shù)依賴集。三、關(guān)系模式的分解特性1關(guān)系模式的分解:設(shè)有關(guān)系模式R(U),屬性集為U,而R1,R2,Rk都是U的子集,并且有R1R2Rk=U。關(guān)系模式R1,R2,Rk的集合用表示,=R1,R2,Rk。用代替R的過(guò)程稱為關(guān)系模式的分解。這里稱為R的一個(gè)分解,也稱為數(shù)據(jù)庫(kù)模式。一般把上述的R稱為泛關(guān)系模式,R對(duì)應(yīng)的當(dāng)前值稱為泛關(guān)系。數(shù)據(jù)庫(kù)模式對(duì)應(yīng)的當(dāng)前值稱為數(shù)據(jù)庫(kù)實(shí)例,它由數(shù)據(jù)庫(kù)模式中的每一個(gè)關(guān)系模式的當(dāng)前值組成。我們用=<r1,r2,rk>表示。因此,在計(jì)算機(jī)中數(shù)據(jù)并不是存儲(chǔ)在泛關(guān)系r中,而是存儲(chǔ)在數(shù)據(jù)庫(kù)中。2和r是否等價(jià)
26、,即是否表示同樣的數(shù)據(jù)。這個(gè)問(wèn)題用“無(wú)損分解”特性表示。在模式R上有一個(gè)FD集F,在的每一個(gè)模式Ri上有一個(gè)FD集Fi,那么F1,F(xiàn)2,F(xiàn)k與F是否等價(jià)。這個(gè)問(wè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,如果存在XÌW有XA成立,那么稱WA是局部依賴(A局部依賴于W);否則稱WA是完全依賴。5主屬性和
27、非主屬性:如果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是非主屬性和XÌW,那么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和AÍY,那么
28、稱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是非主屬性,ZÍX,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也是1NF
29、模式。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ù)依賴;而B(niǎo)CNF則消除了每一屬性對(duì)鍵的傳遞函數(shù)依賴。16關(guān)系模式設(shè)計(jì)理論主要用于數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)過(guò)程中。第四章 關(guān)系運(yùn)算要求、目標(biāo):理解關(guān)系模型的運(yùn)算理論,了解關(guān)系演算和查詢優(yōu)化,熟練掌握關(guān)
30、系代數(shù)運(yùn)算,掌握關(guān)系代數(shù)表達(dá)式的構(gòu)造方法。一、簡(jiǎn)介1關(guān)系模型的三個(gè)組成部分:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操縱和數(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ǔ)言
31、分兩類:關(guān)系代數(shù)語(yǔ)言(查詢操作以集合操作為基礎(chǔ))和關(guān)系演算語(yǔ)言(查詢操作以謂詞演算為基礎(chǔ))二、關(guān)系代數(shù)1關(guān)系代數(shù)中的操作可以分為兩類:1)傳統(tǒng)的集合操作:并、差、交、笛卡兒積(乘法)、笛卡兒積的逆運(yùn)算(除法)2)擴(kuò)充的關(guān)系操作:投影、選擇、連接等。2關(guān)系代數(shù)的五個(gè)基本操作:并、差、笛卡兒積、投影和選擇??偨Y(jié):查詢語(yǔ)句的關(guān)系代數(shù)表達(dá)式的一般形式是:(R×S)或(RS)即首先把查詢涉及到的關(guān)系取來(lái),執(zhí)行笛卡兒積或自然連接操作得到一大的表格,然后對(duì)大表格執(zhí)行水平分割(選擇操作)和垂直分割(投影操作)。但這種形式不適用于否定或全部值的查詢。這時(shí)要用差或除法操作。13外連接:如果R和S做自然連
32、接時(shí),把原該舍棄的元組也保留在新關(guān)系中,同時(shí)在這些元組新增加的屬性上填上空值(Null),這種操作稱為“外連接”操作。14左外連接:如果R和S做自然連接時(shí),只把R中原該舍棄的元組放到新關(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)系
33、演算和域關(guān)系演算,前者以元組為變量,后者以屬性(域)為變量。四、關(guān)系代數(shù)表達(dá)式的優(yōu)化1目的:提高系統(tǒng)效率。2三條啟發(fā)式規(guī)則:1)盡可能早地執(zhí)行選擇操作;1) 盡可能早地執(zhí)行投影操作;2) 避免直接做笛卡兒積,把笛卡兒積操作之前和之后的一連串選擇和投影合并起來(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
34、模式是表和約束的集合。2)一個(gè)表由行集構(gòu)成,一行是列的序列,每列對(duì)應(yīng)一個(gè)數(shù)據(jù)項(xiàng)。3)表有三種類型:基本表、視圖和導(dǎo)出表。基本表:實(shí)際存儲(chǔ)在數(shù)據(jù)庫(kù)中的表。視圖:由若干基本表或其他視圖構(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,用于定
35、義SQL模式、基本表、視圖、索引等結(jié)構(gòu)。2)數(shù)據(jù)操縱語(yǔ)言,即SQL DML。數(shù)據(jù)操縱分成數(shù)據(jù)查詢和數(shù)據(jù)更新兩類。而數(shù)據(jù)更新又分成插入、刪除和修改三種操作。3)嵌入式SQL語(yǔ)言的使用規(guī)定4)數(shù)據(jù)控制語(yǔ)言,即SQL DCL,這一部分包括對(duì)基本表和視圖的授權(quán)、完整性規(guī)則的描述、事務(wù)控制等容。4SQL的特點(diǎn)1)SQL具有十分靈活和強(qiáng)大的查詢功能。2)SQL不是一個(gè)應(yīng)用開(kāi)發(fā)語(yǔ)言,它只提供對(duì)數(shù)據(jù)庫(kù)的操作功能。但SQL既可作為交互式語(yǔ)言獨(dú)立使用,也可作為子語(yǔ)言嵌入在主語(yǔ)言中使用,成為應(yīng)用開(kāi)發(fā)語(yǔ)言的一部分。3)SQL是國(guó)際標(biāo)準(zhǔn)語(yǔ)言,有利于各種數(shù)據(jù)庫(kù)之間交換數(shù)據(jù),有利于程序的移植,有利于實(shí)現(xiàn)高度的數(shù)據(jù)獨(dú)立性,有
36、利于實(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模式定義為基本表的集合。一個(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ǔ)句
37、時(shí),把SQL模式及其下屬的基本表、視圖、索引等所有元素全部撤銷。 RESTRICT(約束式)方式:只有當(dāng)SQL模式中沒(méi)有任何下屬元素時(shí),才能撤銷SQL模式,否則拒絕執(zhí)行DROP語(yǔ)句。3SQL的基本數(shù)據(jù)類型1)數(shù)值型INTEGER(或INT) 長(zhǎng)整數(shù)SMALLINT 短整數(shù)REAL 浮點(diǎn)數(shù)DOUBLE PRECISION 雙精度浮點(diǎn)數(shù)FLOAT(n) 浮點(diǎn)數(shù),精度至少為n位數(shù)字NUMERIC(p,d)定點(diǎn)數(shù),有p位數(shù)字(不包括符號(hào)、小數(shù)點(diǎn))組成,小數(shù)點(diǎn)后有d位數(shù)字,也可寫(xiě)成DECIMAL(p,d)或DEC(p,d)2)字符串型CHAR(n)長(zhǎng)度為n的定長(zhǎng)字符串VARCHAR(n)具有最大長(zhǎng)度為n
38、的變長(zhǎng)字符串3)位串型BIT(n)長(zhǎng)度為n的二進(jìn)制位串BIT VARYING(n)最大長(zhǎng)度為n的變長(zhǎng)二進(jìn)制位串4)時(shí)間型DATE日期,包含年、月、日,形為YYYY-MM-DDTIME時(shí)間,包含時(shí)、分、秒,形為HH:MM:SS4基本表結(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#,
39、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 TABLE 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 NU
40、LL,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#) 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 <
41、基本表名> DROP <列名> CASCADE | RESTRICT說(shuō)明:CASCADE方式表示在基本表中刪除某列時(shí),所有引用到該列的視圖和約束也要一起自動(dòng)地被刪除;RESTRICT方式表示在沒(méi)有視圖或約束引用該屬性時(shí),才能在基本表中刪除該列,否則拒絕刪除。3)修改原有列的類型、寬度語(yǔ)法:ALTER TABLE <基本表名> MODIFY <列名> <類型>6基本表的撤銷語(yǔ)法:DROP TABLE <基本表名> CASCADE | RESTRICT7索引的創(chuàng)建語(yǔ)法:CREATE UNIQUE INDEX <索引名>
42、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(R1××Rm)這里,R1、Rm為關(guān)系,F(xiàn)是公式,A1、An為屬性。與該表達(dá)式對(duì)應(yīng),SQL設(shè)計(jì)了SELECTFROMWHERE句型:SELECT A1,An
43、FROM R1,RmWHERE F注意:1)在學(xué)習(xí)時(shí),應(yīng)把SELECT語(yǔ)句和關(guān)系代數(shù)表達(dá)式聯(lián)系起來(lái)考慮問(wèn)題。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ǔ)句可以嵌套。4SELECT語(yǔ)句完整的句法SELECT <目標(biāo)表的列名或列表達(dá)式序列>FROM <基本表名和(或)視圖序列>WHERE <行條件表達(dá)
44、式>GROUP BY <列名序列>HAVING <組條件表達(dá)式>ORDER BY <列名ASC | DESC>,說(shuō)明:表示其中的容根據(jù)需要可以省略。|表示二選一。 各子句的作用:SELECT子句用于指定輸出的容;FROM子句用于指定要檢索的數(shù)據(jù)的來(lái)源表;WHERE子句稱為“行條件子句”,用于指定對(duì)元組的選取條件;GROUP BY子句稱為“分組子句”,作用是指定對(duì)元組進(jìn)行分類后再檢索;HAVING子句稱為“組條件子句”,用于指定對(duì)分類后的元組的選取條件;ORDER BY子句稱為“排序子句”,作用是對(duì)檢索到的元組進(jìn)行排序。整個(gè)語(yǔ)句的執(zhí)行過(guò)程為:1)讀取FR
45、OM子句中基本表、視圖的數(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 COUNT(S#)FROM SCGROUP BY C#例2:統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù),要求只查詢出選修人數(shù)超過(guò)50人的結(jié)果。SELECT COUNT(S#)FROM SCGROUP BY C#HAVING COUNT
46、(S#)>50例3:檢索每名學(xué)生的學(xué)號(hào)和年齡,查詢結(jié)果按年齡降序排列,年齡相同按學(xué)號(hào)升序排列。SELECT S#,AGE>FROM 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é)果中,一般可不必寫(xiě)出。2)*是對(duì)于在FROM子句中命名表的所有列的簡(jiǎn)寫(xiě)。3)列表達(dá)式中允許出現(xiàn)+、-、*、/等運(yùn)算符以及列名和常數(shù)、聚合函數(shù)等。例1:檢索男同學(xué)選修的課程的課程號(hào)。SELECT DIST
47、INCT 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è)表起別名。但要注意:一旦給表起了別名,在該語(yǔ)句中,凡是引用該表名時(shí),必須用別名而不能用原表名。有時(shí),用戶也可以要求輸出的列名與基本表中列名不一致,可在SELECT子句用“舊名 AS 新名”形式改名。其中AS
48、可以省略。例:檢索每個(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)查找(不)在給定圍的數(shù)據(jù),下限在前,上限在后,包括上、下限。例:檢索1820歲的學(xué)生。SELECT SNAMEFROM SWHERE AGE=18 AND AGE=20或:SELECT SNAMEFROM SWHERE AGE BETWEEN 18 AND 202)
49、字符串的匹配操作語(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)義字符。例:LIKE ab%cd% ESCAPE 匹配所有以ab%cd開(kāi)頭的字符串。LIKE abcd% ESCAPE 匹配所有以abcd開(kāi)頭的字符串。3)空值的比較
50、操作使用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# FROM S WHERE SEX=男)5)集合成員的算術(shù)比較語(yǔ)法:元組 ALL|SOME|ANY(集合)說(shuō)明:ALL表示左邊那個(gè)元組與右邊集合中
51、每一個(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。見(jiàn)前面例子。四、數(shù)據(jù)更新1數(shù)據(jù)插入語(yǔ)法:1)單元組的插入:INSERT INTO <基本表名> (<列名序列>
52、) VALUES(<元組值>)2)多元組的插入INSERT INTO <基本表名> (<列名序列>) VALUES(<元組值>),(<元組值>), (<元組值>) 3)查詢結(jié)果的插入INSERT INTO <基本表名> (<列名序列>) <SELECCT查詢語(yǔ)句>4)表的插入INSERT INTO <基本表名1> (<列名序列>) TABLE <基本表名2>說(shuō)明:在上述各種插入語(yǔ)句中,如果插入的值在屬性個(gè)數(shù)、順序與基本表的結(jié)構(gòu)完全一致,那么基本表后的(
53、<列名序列>)可省略,否則必須詳細(xì)列出。2數(shù)據(jù)刪除語(yǔ)法:DELETE FROM <基本表名>WHERE <條件表達(dá)式>說(shuō)明:如果省略WHERE子句,表示刪除基本表中所有元組。例:把課程名為MATHS的成績(jī)從基本表SC中刪除。DELETE FROM SCWHERE C# IN(SELECT C# FROM C WHERE CNAME=MATHS)3數(shù)據(jù)修改語(yǔ)法:UPDATE <基本表名>SET <列名>=<值表達(dá)式>,<列名>=<值表達(dá)式>| ROW=(<元組>) WHERE <條件表達(dá)式>例1:把C5課程的課程名改為DB。UPDATE CSET CNAME=DBWHERE C#=C5例2:把課程號(hào)為C5的元組修改為(C5,DB,T3)UPDATE CSET ROW=(C5,DB,T3)WHERE C#=C5五、視圖1在SQL中,外模式一級(jí)數(shù)據(jù)結(jié)構(gòu)的基本單位是視圖。2視圖的定義:視圖是從若干基本表和(或)其他視圖構(gòu)造出來(lái)的表。這種構(gòu)造方法采用SELECT語(yǔ)句實(shí)現(xiàn)。在我們創(chuàng)建一個(gè)視圖時(shí),只是把其視圖的定義存放在數(shù)據(jù)字典中,而不存儲(chǔ)視圖對(duì)應(yīng)的數(shù)據(jù),在用戶使用視圖時(shí)才去求對(duì)應(yīng)的數(shù)據(jù)。因此,視圖被稱為“虛表”。3視圖的創(chuàng)建語(yǔ)法:CREATE VIEW &
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療領(lǐng)域的新機(jī)遇區(qū)塊鏈技術(shù)的市場(chǎng)應(yīng)用與前景
- 醫(yī)療設(shè)備操作規(guī)范與質(zhì)量控制
- 醫(yī)療大數(shù)據(jù)分析在醫(yī)療服務(wù)中的應(yīng)用
- 2025年試用期轉(zhuǎn)正工作總結(jié)模版
- 醫(yī)療大數(shù)據(jù)下的患者滿意度分析
- AI技術(shù)在手術(shù)輔助系統(tǒng)中的倫理邊界探討
- 醫(yī)學(xué)倫理在中藥治療技術(shù)傳播中的作用研究
- 生產(chǎn)部門2025年度工作總結(jié)模版
- 代課老師聘用合同范例
- 醫(yī)患溝通藝術(shù)與銷售溝通技巧共通點(diǎn)解析
- 國(guó)開(kāi)【形考】《管理英語(yǔ)(3)》形成性考核1-8答案
- 起訴意見(jiàn)書(shū)(公安)
- 2023學(xué)年完整公開(kāi)課版用戶思維
- 醫(yī)院獲得性肺炎的診斷與治療
- 新產(chǎn)品試產(chǎn)工作指引
- 松下伺服驅(qū)動(dòng)器說(shuō)明書(shū)
- 實(shí)驗(yàn):驗(yàn)證動(dòng)量守恒定律 說(shuō)課課件
- 連桿加工工藝規(guī)程及夾具設(shè)計(jì)工序卡-工藝規(guī)程卡
- 動(dòng)態(tài)軌道衡電子稱重儀及定量稱重控制系統(tǒng)設(shè)計(jì)概要
- 2023-2024學(xué)年浙江省舟山市小學(xué)語(yǔ)文二年級(jí)下冊(cè)期末自測(cè)模擬試卷
- 新生兒早期基本保健(EENC)指南要點(diǎn)解讀課件
評(píng)論
0/150
提交評(píng)論