《數(shù)據(jù)庫系統(tǒng)》PPT課件.ppt
《《數(shù)據(jù)庫系統(tǒng)》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫系統(tǒng)》PPT課件.ppt(126頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第5章 數(shù)據(jù)庫系統(tǒng),5.1 數(shù)據(jù)庫系統(tǒng)基本概念 5.1.1什么是數(shù)據(jù)庫系統(tǒng),3個(gè)基本概念: (1)數(shù)據(jù)庫(database,簡(jiǎn)稱DB)。 (2)數(shù)據(jù)庫管理系統(tǒng)(database management system,簡(jiǎn)稱DBMS)。 (3)數(shù)據(jù)庫系統(tǒng)(database system,簡(jiǎn)稱DBS)。,數(shù)據(jù)庫(DataBase,簡(jiǎn)稱DB) 數(shù)據(jù)庫是長(zhǎng)期存放在計(jì)算機(jī)內(nèi)一個(gè)通用化的、綜合性的、有結(jié)構(gòu)的、可共享的數(shù)據(jù)集合。 數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存,具有盡可能小的冗余度和較高的數(shù)據(jù)獨(dú)立性、安全性和易擴(kuò)展性。,數(shù)據(jù)庫管理系統(tǒng)(DBMS) 數(shù)據(jù)庫系統(tǒng)的核心組成部分,對(duì)數(shù)據(jù)進(jìn)行管理的軟件。 主要功能: 數(shù)據(jù)定義 :對(duì)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)象進(jìn)行定義 。 數(shù)據(jù)操作:查詢、插入、刪除、修改等 數(shù)據(jù)庫的運(yùn)行管理:對(duì)數(shù)據(jù)庫的建立、運(yùn)用和維護(hù)進(jìn)行統(tǒng)一管理和控制 :安全性控制、完整性控制、并發(fā)控制、備份與恢復(fù) 數(shù)據(jù)庫的建立和維護(hù)功能 數(shù)據(jù)庫初始數(shù)據(jù)的輸入和轉(zhuǎn)換功能、數(shù)據(jù)庫的轉(zhuǎn)儲(chǔ)和恢復(fù)功能以及數(shù)據(jù)庫重組織功能和性能監(jiān)視、分析功能等。,常見的DBMS產(chǎn)品:Oracle,Microsoft SQL Server(微軟),DB2(IBM), Sybase,Access(微軟) 等。,.MySQL,MySQL是最受歡迎的開源SQL數(shù)據(jù)庫管理系統(tǒng),它由MySQL AB開發(fā)、發(fā)布和支持。MySQL AB是一家基于MySQL開發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來結(jié)合開源價(jià)值和方法論的第二代開源公司。MySQL是MySQL AB的注冊(cè)商標(biāo)。 MySQL是一個(gè)快速的、多線程、多用戶和健壯的SQL數(shù)據(jù)庫服務(wù)器。MySQL服務(wù)器支持關(guān)鍵任務(wù)、重負(fù)載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個(gè)大配置(mass- deployed)的軟件中去。,SQL Server,SQL Server是由微軟開發(fā)的數(shù)據(jù)庫管理系統(tǒng),是Web上最流行的用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫,它已廣泛用于電子商務(wù)、銀行、保險(xiǎn)、電力等與數(shù)據(jù)庫有關(guān)的行業(yè)。 SQL Server 提供了眾多的Web和電子商務(wù)功能,如對(duì)XML和Internet標(biāo)準(zhǔn)的豐富支持,通過Web對(duì)數(shù)據(jù)進(jìn)行輕松安全的訪問,具有強(qiáng)大的、靈活的、基于Web的和安全的應(yīng)用程序管理等。而且,由于其易操作性及其友好的操作界面,深受廣大用戶的喜愛。 多用戶時(shí)性能不佳,Oracle,Oracle數(shù)據(jù)庫是當(dāng)今最大的數(shù)據(jù)庫廠商Oracle公司的產(chǎn)品,是世界上第一個(gè)商品化的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),也是第一個(gè)推出與數(shù)據(jù)庫結(jié)合的第四代語言開發(fā)工具的數(shù)據(jù)庫產(chǎn)品。 Oracle數(shù)據(jù)庫的廣泛應(yīng)用是與其安全性高、穩(wěn)定性好和跨平臺(tái)性能強(qiáng)等特點(diǎn)分不開的。其容量大、并發(fā)性高等特征可以滿足各種商業(yè)需求;Oracle數(shù)據(jù)庫的應(yīng)用結(jié)構(gòu)包括C/S結(jié)構(gòu)、B/S結(jié)構(gòu)和分布式系統(tǒng)結(jié)構(gòu)等多種,可以滿足不同架構(gòu)的系統(tǒng)要求。在安全方面,獲得最高級(jí)別的ISO標(biāo)準(zhǔn)認(rèn)證。因此,Oracle數(shù)據(jù)庫成為當(dāng)前數(shù)據(jù)庫市場(chǎng)占有率最高的產(chǎn)品。,Sybase,1987年Sybase公司推出了Sybase數(shù)據(jù)庫產(chǎn)品。Sybase主要有三種版本:一是UNIX操作系統(tǒng)下運(yùn)行的版本;二是Novell Netware環(huán)境下運(yùn)行的版本;三是Windows NT環(huán)境下運(yùn)行的版本。對(duì)UNIX操作系統(tǒng),目前應(yīng)用最廣泛的是SYBASE 10及SYABSE 11 for SCO UNIX 。 Sybase數(shù)據(jù)庫的特點(diǎn): (1)它是基于客戶/服務(wù)器體系結(jié)構(gòu)的數(shù)據(jù)庫。 (2)它是真正開放的數(shù)據(jù)庫。 (3)它是一種高性能的數(shù)據(jù)庫。,DB2,DB2是內(nèi)嵌于IBM的AS/400系統(tǒng)上的數(shù)據(jù)庫管理系統(tǒng),直接由硬件支持。它支持標(biāo)準(zhǔn)的SQL語言,具有與異種數(shù)據(jù)庫相連的GATEWAY。因此它具有速度快、可靠性好的優(yōu)點(diǎn)。但是,只有硬件平臺(tái)選擇了IBM的AS/400,才能選擇使用DB2數(shù)據(jù)庫管理系統(tǒng)。 DB2能在所有主流平臺(tái)上運(yùn)行(包括Windows),最適于海量數(shù)據(jù)。 DB2在企業(yè)級(jí)的應(yīng)用最為廣泛,在全球的500家最大的企業(yè)中,幾乎85%以上都用DB2數(shù)據(jù)庫服務(wù)器,而國(guó)內(nèi)到1997年約占5%。 除此之外,還有微軟的 Access數(shù)據(jù)庫、FoxPro數(shù)據(jù)庫等。其中MySQL是一個(gè)完全免費(fèi)的數(shù)據(jù)庫系統(tǒng),其功能也具備了標(biāo)準(zhǔn)數(shù)據(jù)庫的功能,因此,在獨(dú)立制作時(shí),建議使用。Oracle雖然功能強(qiáng)勁,但它畢竟是為商業(yè)用途而存在的。,sql是數(shù)據(jù)庫基礎(chǔ)。 access是編程軟件,可以自己做界面,不是專業(yè)搞計(jì)算機(jī)的建議學(xué)access,但是access也會(huì)用到sql命令。 access是中小型企業(yè)所用。它可以編輯界面,可以存放數(shù)據(jù),但只能在有安裝access軟件的電腦上才可以使用。 sql是大型企業(yè)所用。它只是一個(gè)存放(查詢,修改)數(shù)據(jù)的地方。不能編輯界面。 可以學(xué)vb或c++再加sql數(shù)據(jù)庫比較實(shí)用。,總結(jié),數(shù)據(jù)庫系統(tǒng)(DBS) 在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成。 組成:數(shù)據(jù)庫(及相關(guān)硬件)、數(shù)據(jù)庫管理系統(tǒng)及開發(fā)工具、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶等。 數(shù)據(jù)庫管理員(DataBase Administrator,簡(jiǎn)稱DBA) :負(fù)責(zé)全面管理和控制數(shù)據(jù)庫系統(tǒng)。,問:數(shù)據(jù)庫(DB)、數(shù)據(jù)庫系統(tǒng)(DBS)與數(shù)據(jù)庫管理系統(tǒng)(DBMS)之間是什么關(guān)系?,數(shù)據(jù)庫系統(tǒng)層次結(jié)構(gòu)圖,,,,,硬件(含DB),操作系統(tǒng),DBMS,開發(fā)工具軟件,應(yīng)用系統(tǒng),A.DBS包括DB和DBMS B.DB包括DBS和DBMS C.DBMS包括DBS和DB D.DBS與DB和DBMS無關(guān),√,圖5.1.1 數(shù)據(jù)庫系統(tǒng) 示意圖,,5.1.2 數(shù)據(jù)管理的三個(gè)階段,1.人工管理階段 2.文件系統(tǒng)階段 3.?dāng)?shù)據(jù)庫系統(tǒng)階段,背景: 50年代中期以前 計(jì)算機(jī)主要用于科學(xué)計(jì)算; 當(dāng)時(shí)外存儲(chǔ)器有:磁帶、紙帶、卡片; 還沒有操作系統(tǒng)和管理數(shù)據(jù)的專用軟件; 所以主要靠人工利用計(jì)算機(jī)來管理數(shù)據(jù)。,,人工管理階段,,數(shù)據(jù)不能共享 數(shù)據(jù)不具有獨(dú)立性 依靠應(yīng)用程序管理數(shù)據(jù) 數(shù)據(jù)一般不需要長(zhǎng)期保存。,人工管理階段主要特點(diǎn):,,文件系統(tǒng)管理階段,背景: 50年代后期--60年代中期 計(jì)算機(jī)已經(jīng)大量用于數(shù)據(jù)管理; 外存有了磁盤、磁鼓等直接存取設(shè)備; 有了管理數(shù)據(jù)的軟件--文件系統(tǒng)(此時(shí)的文件系統(tǒng)是包括在操作系統(tǒng)中的,用戶通過文件系統(tǒng)這個(gè)軟件去管理大量的數(shù)據(jù))。,文件系統(tǒng)階段( 50年代后期到60年代中期),文件系統(tǒng)方法階段由操作系統(tǒng)的文件系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行管理,用戶無需直接涉及物理設(shè)備及數(shù)據(jù)的物理組織細(xì)節(jié)。,優(yōu)點(diǎn): “按文件名進(jìn)行訪問,按記錄進(jìn)行存儲(chǔ)” 數(shù)據(jù)存儲(chǔ)由操作系統(tǒng)提供支持,用戶程序與數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)的分離,采用: “應(yīng)用程序-操作系統(tǒng)-數(shù)據(jù)文件”的存取方式。,文件管理階段主要特點(diǎn):,數(shù)據(jù)可以長(zhǎng)期保存 不需要設(shè)計(jì)物理結(jié)構(gòu) 數(shù)據(jù)獨(dú)立性差-文件邏輯結(jié)構(gòu)的改變要修改應(yīng)用程序;數(shù)據(jù)和程序間缺乏獨(dú)立性 數(shù)據(jù)共享性差-一個(gè)文件一般對(duì)應(yīng)于一個(gè)應(yīng)用程序,不同的應(yīng)用程序具有相同的數(shù)據(jù)時(shí),也必須建立各自的文件。,數(shù)據(jù)是結(jié)構(gòu)化的,是面向系統(tǒng)的。 數(shù)據(jù)獨(dú)立性高。 高度的數(shù)據(jù)控制能力。,數(shù)據(jù)庫系統(tǒng)階段主要特點(diǎn):,,OS,數(shù)據(jù)庫方法的特點(diǎn),1. 對(duì)數(shù)據(jù)實(shí)施集中統(tǒng)一管理 數(shù)據(jù)庫系統(tǒng)通過DBMS實(shí)現(xiàn)對(duì)所有數(shù)據(jù)的集中統(tǒng)一管理,即對(duì)數(shù)據(jù)的結(jié)構(gòu)、數(shù)據(jù)的特征(名、類型、長(zhǎng)度)、數(shù)據(jù)的操作、數(shù)據(jù)的一致性、數(shù)據(jù)的安全保密性等均按統(tǒng)一標(biāo)準(zhǔn)進(jìn)行控制和管理。也正因?yàn)閷?shí)施這種集中統(tǒng)一管理,才能實(shí)現(xiàn)下述的各優(yōu)點(diǎn)。,2. 數(shù)據(jù)獨(dú)立性高 數(shù)據(jù)與使用數(shù)據(jù)的程序分離的特征稱為數(shù)據(jù)獨(dú)立性。其目的是使得數(shù)據(jù)或應(yīng)用程序的修改不導(dǎo)致對(duì)方的修改。 數(shù)據(jù)獨(dú)立性分為兩種: 邏輯數(shù)據(jù)獨(dú)立性——數(shù)據(jù)庫的全局邏輯結(jié)構(gòu)發(fā)生改變時(shí),用戶應(yīng)用程序不必改變,或反之。 物理數(shù)據(jù)獨(dú)立性——數(shù)據(jù)庫的物理結(jié)構(gòu)(存儲(chǔ)設(shè)備、存儲(chǔ)結(jié)構(gòu)、存取方法)發(fā)生改變時(shí),應(yīng)用程序無需改變。,數(shù)據(jù)庫方法的特點(diǎn)(續(xù)),3. 數(shù)據(jù)共享 數(shù)據(jù)共享指數(shù)據(jù)庫中的同一數(shù)據(jù)可為多個(gè)用戶共同使用。,4. 控制冗余 冗余由同一數(shù)據(jù)的重復(fù)存儲(chǔ)產(chǎn)生。數(shù)據(jù)庫方法中的同一數(shù)據(jù)可重復(fù)出現(xiàn)在不同局部數(shù)據(jù)結(jié)構(gòu)中,但物理上只存儲(chǔ)一次。 數(shù)據(jù)庫中并非完全消除冗余,有時(shí)為了數(shù)據(jù)的存取效率,同一數(shù)據(jù)可保留多個(gè)副本。,5. 數(shù)據(jù)完整性 數(shù)據(jù)完整性是指數(shù)據(jù)的正確性、真實(shí)性和客觀性。 例如,一個(gè) 25 歲的職員有 35 年工齡,一個(gè)人的身高為 5 米,都是數(shù)據(jù)完整性被破壞的情況。,數(shù)據(jù)庫方法的特點(diǎn)(續(xù)),6. 數(shù)據(jù)一致性 數(shù)據(jù)一致性是指數(shù)據(jù)庫中表示同一對(duì)象的數(shù)據(jù)無論何時(shí)何處都是一致的。例如,同一職員的年齡在數(shù)據(jù)庫中存在多個(gè)不同的值就是數(shù)據(jù)不一致的情況。 數(shù)據(jù)不一致性通常是由數(shù)據(jù)冗余或并發(fā)控制不當(dāng)造成的。另外,系統(tǒng)故障或運(yùn)行錯(cuò)誤也可導(dǎo)致數(shù)據(jù)的不一致性。,7. 數(shù)據(jù)安全性 數(shù)據(jù)安全性即數(shù)據(jù)保密問題,以防止對(duì)數(shù)據(jù)的非授權(quán)訪問。DBMS可在全局?jǐn)?shù)據(jù)結(jié)構(gòu)、局部數(shù)據(jù)結(jié)構(gòu)、記錄甚至數(shù)據(jù)項(xiàng)級(jí)提供安全性檢查與控制。 常見的安全控制方法有身份鑒別、存取控制、數(shù)據(jù)加密、審計(jì)等。,5.1.3 數(shù)據(jù)描述與數(shù)據(jù)模型,1.?dāng)?shù)據(jù)描述,信息的三個(gè)領(lǐng)域 現(xiàn)實(shí)世界(事實(shí)世界) 信息世界(觀念世界) 數(shù)據(jù)世界(計(jì)算機(jī)世界、機(jī)器世界),概念模型描述,數(shù)據(jù)模型描述,,圖5.1.5 現(xiàn)實(shí)世界、信息世界和數(shù)據(jù)世界的關(guān)系,信息世界涉及到的幾個(gè)基本概念 :,(1)實(shí)體??陀^存在并可相互區(qū)別的事物。 (2)屬性。實(shí)體所具有的某一特性。一個(gè)實(shí)體可以由若干個(gè)屬性來刻畫。例如:學(xué)生 (學(xué)號(hào),姓名,性別,年齡) (3)域。屬性的取值范圍稱為該屬性的域。 (4)實(shí)體集。同型實(shí)體的集合稱為實(shí)體集。例如,全體學(xué)生就是一個(gè)實(shí)體集。 (5)實(shí)體型。用實(shí)體名及其屬性名集合來抽象和刻畫實(shí)體集,稱為實(shí)體型。實(shí)體型往往簡(jiǎn)稱為實(shí)體。 (6)關(guān)鍵字。唯一標(biāo)識(shí)實(shí)體的屬性稱為關(guān)鍵字。 (7)實(shí)體值(entity value)——實(shí)體型的具體實(shí)例。,學(xué) 生,,實(shí)體型,,實(shí)體值,,實(shí)體集,2.?dāng)?shù)據(jù)模型,是對(duì)客觀事物及其聯(lián)系的數(shù)據(jù)描述,它反映了實(shí)體內(nèi)部以及實(shí)體與實(shí)體之間的聯(lián)系,是數(shù)據(jù)庫設(shè)計(jì)的核心。 目前常用的數(shù)據(jù)模型有三種:,層次模型:用樹型結(jié)構(gòu)表示實(shí)體間的聯(lián)系。 網(wǎng)狀模型:用有向圖結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系。 關(guān)系模型:用二維表結(jié)構(gòu)表達(dá)實(shí)體和實(shí)體間的聯(lián)系。 每一個(gè)二維表稱為一個(gè)關(guān)系。,層次模型,用樹型結(jié)構(gòu)表示實(shí)體及實(shí)體間聯(lián)系的數(shù)據(jù)模型。,表示方法: ① 一個(gè)結(jié)點(diǎn)表示一個(gè)實(shí)體; ② 無向連線表示實(shí)體間聯(lián)系; ③ 聯(lián)系中表示1的實(shí)體在上層, 表示n的結(jié)點(diǎn)在下層。,特征: ① 有且僅有一個(gè)結(jié)點(diǎn)無父結(jié)點(diǎn),該結(jié)點(diǎn)稱為根; ② 根以外的結(jié)點(diǎn)有且僅有一個(gè)父結(jié)點(diǎn)。 缺點(diǎn): ①只能表示 1:m 聯(lián)系,不能直接表示 m:n 聯(lián)系; ② 隨機(jī)存取效率低。,網(wǎng)狀模型,用網(wǎng)狀結(jié)構(gòu)表示實(shí)體及實(shí)體間聯(lián)系的數(shù)據(jù)模型。,表示方法: ① 一個(gè)結(jié)點(diǎn)表示一個(gè)實(shí)體; ② 有向連線表示實(shí)體間聯(lián)系; ③ 兩個(gè)結(jié)點(diǎn)間的聯(lián)系不唯一,因此聯(lián)系必須命名。,特征: ① 可以有多個(gè)結(jié)點(diǎn)無父結(jié)點(diǎn); ② 至少有一個(gè)結(jié)點(diǎn)有多個(gè)父結(jié)點(diǎn)。 缺點(diǎn): ① 結(jié)構(gòu)復(fù)雜; ② 數(shù)據(jù)獨(dú)立性不高。,關(guān)系模型,用二維表格表示實(shí)體及實(shí)體間聯(lián)系的數(shù)據(jù)模型。,,關(guān) 系,關(guān)系中: ① 每一行稱為元組; ② 每一列稱為屬性,每一屬性的值集稱為域; ③ 若一個(gè)關(guān)系有N個(gè)屬性,則稱該關(guān)系為N元關(guān)系。 關(guān)系和屬性都必須命名。,特點(diǎn): ① 用關(guān)系表示實(shí)體; ② 用關(guān)系表示實(shí)體間的聯(lián)系; ③ 行、列次序無關(guān); ④ 屬性不可再分; ⑤ 每個(gè)關(guān)系至少有一個(gè)關(guān)鍵字。,,,能唯一標(biāo)識(shí)一個(gè)元組的最小屬性集,表5.5、表5.6、表5.7給出三個(gè)不同的關(guān)系集,其中表5.5和表5.6是基本關(guān)系,用于表示現(xiàn)實(shí)世界的基本實(shí)體。 而表5.7則是“聯(lián)系”關(guān)系,用于表示哪些學(xué)生選修哪些課程的聯(lián)系,這種聯(lián)系是通過在“選課”關(guān)系中引入“學(xué)生”關(guān)系中的“學(xué)號(hào)”和“課程”關(guān)系中的“課程號(hào)”屬性的數(shù)據(jù)建立的。,舉例,關(guān)系數(shù)據(jù)模型結(jié)構(gòu)簡(jiǎn)單、理論基礎(chǔ)嚴(yán)密、數(shù)據(jù)獨(dú)立性高、支持非過程化語言、一次操作可存取多個(gè)元組,并且可直接表示多對(duì)多聯(lián)系。 主要不足是查詢效率低。,以一個(gè)選課系統(tǒng)為例:,1、元組:記錄二維表的每一行在關(guān)系中稱為元組,在數(shù)據(jù)庫中稱為記錄。 2、 屬性 :二維表的每一列在關(guān)系中稱為屬性,每個(gè)屬性都有一個(gè)屬性名。 在數(shù)據(jù)庫中,一個(gè)屬性對(duì)應(yīng)表中一個(gè)字段,屬性名對(duì)應(yīng)字段名。 3、域: 屬性的取值范圍稱為域。,二維表里的三個(gè)概念:,5.1.4 實(shí)體聯(lián)系模型,實(shí)體集之間的聯(lián)系,1:1聯(lián)系:如果實(shí)體集E1中的每個(gè)實(shí)體最多只能和實(shí)體集E2中的一個(gè)實(shí)體有聯(lián)系,反之亦然,那么實(shí)體集E1對(duì)E2的聯(lián)系稱為“一對(duì)一聯(lián)系”,記為“1:1”。 1:N聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體與實(shí)體集E2中多個(gè)實(shí)體有聯(lián)系,而E2中每個(gè)實(shí)體至多和E1中的一個(gè)實(shí)體有聯(lián)系,那么E1對(duì)E2的聯(lián)系是“一對(duì)多聯(lián)系”,記為“1:N”。 M:N聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體與實(shí)體集E2中多個(gè)實(shí)體有聯(lián)系,反之亦然,那么E1對(duì)E2的聯(lián)系是“多對(duì)多聯(lián)系”,記為“M:N”。,班 級(jí),班 長(zhǎng),班 級(jí),學(xué) 生,課 程,學(xué) 生,概念模型,是獨(dú)立于計(jì)算機(jī)系統(tǒng)的模型,完全不涉及信息在計(jì)算機(jī)系統(tǒng)中的表示。 最著名的是實(shí)體聯(lián)系模型(Entity-Relationship Model,ER模型),它直接抽象出實(shí)體類型和實(shí)體間的關(guān)系,用ER圖表示數(shù)據(jù)模型。 ER模型的三個(gè)要素:實(shí)體、屬性、聯(lián)系,,,,實(shí)體,聯(lián)系,屬性,ER模型的圖形描述*,實(shí)體-聯(lián)系(Entity-Relationship)模型,采用畫E-R圖的形式直接表示實(shí)體及實(shí)體間聯(lián)系的方法: (1)矩形表示實(shí)體型,框內(nèi)標(biāo)明實(shí)體名; (2)橢園表示屬性,用無向邊與其相應(yīng)實(shí)體連接; (3)菱形表示聯(lián)系,標(biāo)明聯(lián)系名,用無向邊與相關(guān)實(shí)體連接; (4)無向邊上標(biāo)明聯(lián)系的類型(1:1,1:m,m:n); (5)可據(jù)需要任意展開(E-R圖復(fù)雜時(shí)可略去屬性)。,E-R圖是數(shù)據(jù)庫設(shè)計(jì)人員與用戶進(jìn)行溝通、交流的工具。但是,DBMS很難直接支持E-R模型。,例:,請(qǐng)?jiān)O(shè)計(jì)一個(gè)圖書館數(shù)據(jù)庫的ER圖,此數(shù)據(jù)庫中 對(duì)每個(gè)借閱者保存讀者記錄,包括:讀者號(hào)、姓名、地址、性別、年齡、單位 對(duì)每本書存有:書號(hào)、書名、作者、出版社、價(jià)格 對(duì)每本被借出的書存有讀者號(hào)、借出日期和應(yīng)還日期。,,書,讀者,借閱,5.1.5數(shù)據(jù)庫組織 數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)通常采用三級(jí)模式結(jié)構(gòu) :,,1) 模式(也稱邏輯模式) 模式描述的是全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu),又可稱為邏輯模式。 模式是所有用戶的公共數(shù)據(jù)視圖。 它與具體的應(yīng)用程序及使用的程序設(shè)計(jì)語言無關(guān),不涉及物理存儲(chǔ)細(xì)節(jié)。 一個(gè)數(shù)據(jù)庫只有一個(gè)模式,三級(jí)模式,2) 內(nèi)模式 內(nèi)模式描述的是數(shù)據(jù)的物理結(jié)構(gòu)和存儲(chǔ)方式。因而又可稱為存儲(chǔ)模式或物理模式。一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式。 內(nèi)模式是數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)部的表示。 例如:記錄是順序存儲(chǔ)還是按照樹結(jié)構(gòu)存儲(chǔ)還是按照hash 方法存儲(chǔ),索引的組織方式是什么,數(shù)據(jù)是否壓縮、是否加 密,數(shù)據(jù)的存儲(chǔ)記錄結(jié)構(gòu)的規(guī)定等。,三級(jí)模式(續(xù)),3) 外模式 外模式描述的是局部數(shù)據(jù)邏輯結(jié)構(gòu)。它是模式的子集,因而又稱為子模式或用戶模式。 是用戶看到的數(shù)據(jù)視圖,即與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。一個(gè)數(shù)據(jù)庫可以有多個(gè)外模式 同一外模式可以為多個(gè)應(yīng)用程序所使用,一個(gè)應(yīng)用程序只能使用一個(gè)外模式。,模式反映的是數(shù)據(jù)的全局觀 內(nèi)模式反映的是數(shù)據(jù)的存儲(chǔ)觀 外模式反映的是數(shù)據(jù)的用戶觀 全局觀、存儲(chǔ)觀只有一個(gè),而用戶觀可能有多個(gè)。,數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu) 集中式數(shù)據(jù)庫系統(tǒng):數(shù)據(jù)是集中的,數(shù)據(jù)的管理也是集中的 客戶/服務(wù)器數(shù)據(jù)庫系統(tǒng):數(shù)據(jù)是集中的,應(yīng)用分布 分布式數(shù)據(jù)庫系統(tǒng) :數(shù)據(jù)分布、應(yīng)用分布,客戶/服務(wù)器(C/S)數(shù)據(jù)庫系統(tǒng),,分布式數(shù)據(jù)庫系統(tǒng),5.2關(guān)系數(shù)據(jù)庫系統(tǒng) 5.2.1什么是關(guān)系數(shù)據(jù)庫系統(tǒng),關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng) 。 關(guān)系數(shù)據(jù)庫目前是各類數(shù)據(jù)庫中最重要、最流行的數(shù)據(jù)庫。,以一個(gè)或兩個(gè)關(guān)系為輸入(或稱為操作對(duì)象),產(chǎn)生一個(gè)新的關(guān)系作為其操作結(jié)果。即其運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果亦為關(guān)系。 四類運(yùn)算符: 集合運(yùn)算符 專門的關(guān)系運(yùn)算符 比較運(yùn)算符 邏輯運(yùn)算符,5.2.2 關(guān)系代數(shù),1、并( ∪ ):兩個(gè)關(guān)系需有相同的關(guān)系模式,并由兩個(gè)關(guān)系所有元組構(gòu)成 ,但相同的元組僅保留一行。,定義 所有至少出現(xiàn)在兩個(gè)關(guān)系中之一的元組集合 R?S ={ r | r?R ? r?S },R ∪ S,R關(guān)系,S關(guān)系,定義:R-S ={t | t ∈R∧t ?S},2、差(-):兩個(gè)關(guān)系有相同的模式,R-S是由屬于R但不屬于S的元組構(gòu)成的集合。,R - S,R關(guān)系,S關(guān)系,3、交(∩):R和S的交是由既屬于R又屬于S的元組構(gòu)成的集合,關(guān)系R與關(guān)系S的交定義為: R∩S ={t | t∈R∨t∈S},R ∩ S,R關(guān)系,S關(guān)系,定義 二個(gè)分別為n目和m目的關(guān)系R和S的廣義笛卡爾積RS是一個(gè)(n+m)列的元組集合,元組的前n列是關(guān)系R的一個(gè)元組,后m列是關(guān)系S的一個(gè)元組。若R有k1個(gè)元組,S有k2個(gè)元組,則RS有k1k2個(gè)元組。記作: RS ={tr ts |tr∈R∧ts∈S} 其中tr ts表示由兩個(gè)元組tr和ts前后有序連接而成的一個(gè)元組。,4、笛卡爾積():,R關(guān)系,S關(guān)系,R S,專門的關(guān)系運(yùn)算,選擇(Selection) 投影(Projection) 連接(Join) 條件連接 自然連接 除(Division),根據(jù)某些條件關(guān)系作水平分割,即選擇符合條件的元組(單目運(yùn)算)。,形式:σF (R),F:是一個(gè)邏輯表達(dá)式。表示選擇的條件。 邏輯表達(dá)式:把關(guān)系表達(dá)式用邏輯運(yùn)算符∧ ∨-連接起來。 關(guān)系表達(dá)式:用關(guān)系運(yùn)算符 ≤≥ ≠連接起來的式子。,5、選擇(σ):,R關(guān)系,σAB (R),6、投影( Π ):對(duì)關(guān)系進(jìn)行垂直分割,消去某些列,相同的元組保留一行。,R關(guān)系,Π A,C (R),7、連接:(θ連接):是選擇RS中滿足iθj的集合(先笛卡爾積,再選擇)。,R AθB S = σ R.AθS.B (RS),?是比較運(yùn)算符。如果?為‘=’的連接運(yùn)算稱為等值連接,R關(guān)系,S關(guān)系,,,,,R R.AS.B S,8、自然連接(R|X|S):在笛卡爾積RS中,選擇R和S相同屬性值相等的元組,并去掉RS中重復(fù)的相同屬性列。如果兩個(gè)關(guān)系沒有相同屬性,則自然連接就轉(zhuǎn)化為笛卡爾積。,R關(guān)系,S關(guān)系,(R)|X|(S),自然連接例,關(guān)系運(yùn)算舉例,有一個(gè)學(xué)生——課程關(guān)系數(shù)據(jù)庫,包括學(xué)生關(guān)系student、課程關(guān)系course和選課關(guān)系SC。 1)查詢學(xué)生關(guān)系Student在學(xué)生姓名和所在系的兩個(gè)屬性 2)查詢信息系(IS系)全體學(xué)生 3)查詢選修了2號(hào)課程的學(xué)生的學(xué)號(hào)。,學(xué)生關(guān)系Student,查詢學(xué)生關(guān)系Student在學(xué)生姓名和所在系的兩個(gè)屬性,∏Sname, Sdept(Student),∏2, 5Student),,,查詢信息系(IS系)全體學(xué)生,,選修關(guān)系SC,查詢選修了2號(hào)課程的學(xué)生的學(xué)號(hào),(1)首先在選修關(guān)系SC上進(jìn)行選擇操作:選擇課程號(hào)Cno=‘1’的元組,形成新的關(guān)系,如下表所示。,(2)在上述新的關(guān)系上,再進(jìn)行投影操作,選取屬性為學(xué)號(hào)Sno作為最終結(jié)果。,5.2.3 關(guān)系數(shù)據(jù)庫設(shè)計(jì),數(shù)據(jù)庫設(shè)計(jì)是指根據(jù)用戶需求研制數(shù)據(jù)庫結(jié)構(gòu)并應(yīng)用的過程。 數(shù)據(jù)庫設(shè)計(jì)就是指對(duì)于給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能有效地存儲(chǔ)數(shù)據(jù),滿足用戶的信息要求和處理要求。 目前數(shù)據(jù)庫設(shè)計(jì)主要采用邏輯數(shù)據(jù)庫設(shè)計(jì)和物理數(shù)據(jù)庫設(shè)計(jì)為核心的規(guī)范化設(shè)計(jì)方法。 數(shù)據(jù)庫設(shè)計(jì)分為需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫物理設(shè)計(jì)、數(shù)據(jù)庫實(shí)施、數(shù)據(jù)庫運(yùn)行和維護(hù)六個(gè)階段。,數(shù)據(jù)庫設(shè)計(jì)步驟,,數(shù)據(jù)庫設(shè)計(jì)六個(gè)步驟,需求分析階段 需求分析是指準(zhǔn)確了解和分析用戶的需求,這是最困難、最費(fèi)時(shí)、最復(fù)雜的一步,但也是最重要的一步。它決定了以后各階段設(shè)計(jì)的速度和質(zhì)量。 概念結(jié)構(gòu)設(shè)計(jì)階段 概念結(jié)構(gòu)設(shè)計(jì)是指對(duì)用戶的需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS產(chǎn)品的概念模型,是整個(gè)數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵。 邏輯結(jié)構(gòu)設(shè)計(jì)階段 邏輯結(jié)構(gòu)設(shè)計(jì)是指將概念模型轉(zhuǎn)換成某個(gè)DBMS所支持的數(shù)據(jù)模型,并對(duì)其進(jìn)行優(yōu)化。 物理結(jié)構(gòu)設(shè)計(jì)階段 物理結(jié)構(gòu)設(shè)計(jì)是指為邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)和存儲(chǔ)方法)。 數(shù)據(jù)庫實(shí)施階段 數(shù)據(jù)庫實(shí)施是指建立數(shù)據(jù)庫,編制與調(diào)試應(yīng)用程序, 組織數(shù)據(jù)入庫,并進(jìn)行調(diào)試運(yùn)行。 數(shù)據(jù)庫運(yùn)行與維護(hù)階段 數(shù)據(jù)庫運(yùn)行與維護(hù)是指對(duì)數(shù)據(jù)庫系統(tǒng)實(shí)際正常運(yùn)行使用,并時(shí)時(shí)實(shí)時(shí)進(jìn)行評(píng)價(jià)、調(diào)整與修改。,,1、需求分析,需求分析的任務(wù)是通過詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象(組織、部門、企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))的工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。 信息要求 指用戶需要從數(shù)據(jù)庫中獲得信息的內(nèi)容與性質(zhì)。由信息要求可以導(dǎo)出數(shù)據(jù)要求,即在數(shù)據(jù)庫中需要存儲(chǔ)哪些數(shù)據(jù)。 處理要求 指用戶要完成什么處理功能,對(duì)處理的響應(yīng)時(shí)間有什么要求,處理方式是批處理還是聯(lián)機(jī)處理。 安全性與完整性要求 指對(duì)數(shù)據(jù)庫中的數(shù)據(jù)應(yīng)該實(shí)施哪些約束和控制以保證數(shù)據(jù)的完整性和安全性。,需求分析的方法,自頂向下和自底向上兩類 常用:結(jié)構(gòu)化分析方法—自頂向下、逐層分解。,2、概念結(jié)構(gòu)設(shè)計(jì),概念模式獨(dú)立于數(shù)據(jù)庫系統(tǒng)的邏輯結(jié)構(gòu),獨(dú)立于具體的DBMS產(chǎn)品,也獨(dú)立于計(jì)算機(jī)系統(tǒng)。 概念模式是面向現(xiàn)實(shí)世界的數(shù)據(jù)模型,用ER模型來設(shè)計(jì) 逐一設(shè)計(jì)分ER圖-合并分ER圖-消除冗余生產(chǎn)基本ER圖,例:課程管理局部分E-R圖,3、邏輯結(jié)構(gòu)設(shè)計(jì),將概念設(shè)計(jì)階段產(chǎn)生的概念模式變換為邏輯模式。 步驟(以關(guān)系ER模型為例) 將概念結(jié)構(gòu)轉(zhuǎn)換為一般的關(guān)系模型 將以上得到的一般關(guān)系模型向特定DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換 對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化,4、物理結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)庫的物理設(shè)計(jì)是對(duì)已確定的邏輯數(shù)據(jù)結(jié)構(gòu),利用DBMS所提供的方法、技術(shù),以較優(yōu)的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)、數(shù)據(jù)存取路徑、合理的數(shù)據(jù)存放位置以及存儲(chǔ)分配,設(shè)計(jì)出一個(gè)高效的、可實(shí)現(xiàn)的物理數(shù)據(jù)庫結(jié)構(gòu)。物理設(shè)計(jì)常常包括某些操作約束如響應(yīng)時(shí)間與存儲(chǔ)要求等。 完成物理設(shè)計(jì)后,對(duì)該物理結(jié)構(gòu)作出相應(yīng)的性能評(píng)價(jià),評(píng)價(jià)的主要指標(biāo)是時(shí)間和空間效率。,物理設(shè)計(jì)的內(nèi)容,確定數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu) 存取路徑的選擇和調(diào)整 確定數(shù)據(jù)存放位置 確定存儲(chǔ)分配,物理設(shè)計(jì)過程需要對(duì)時(shí)間、空間效率、維護(hù)代價(jià)和各種用戶要求進(jìn)行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案。在實(shí)施數(shù)據(jù)庫前,對(duì)這些方案進(jìn)行細(xì)致的評(píng)價(jià),以選擇一個(gè)較優(yōu)的方案作為來設(shè)計(jì)數(shù)據(jù)庫的物理結(jié)構(gòu)。,5、數(shù)據(jù)庫實(shí)施,數(shù)據(jù)庫實(shí)現(xiàn)主要包括以下工作: 1)定義數(shù)據(jù)庫結(jié)構(gòu):用DBMS提供的數(shù)據(jù)定義語言(DDL)來嚴(yán)格描述數(shù)據(jù)庫結(jié)構(gòu) 2)數(shù)據(jù)裝載:數(shù)據(jù)庫結(jié)構(gòu)建立好后,就可以向數(shù)據(jù)庫中裝載數(shù)據(jù)了 3)編制和調(diào)試應(yīng)用程序 4)數(shù)據(jù)庫運(yùn)行,6、數(shù)據(jù)庫運(yùn)行和維護(hù),數(shù)據(jù)庫運(yùn)行和維護(hù)階段的主要工作為: 1)數(shù)據(jù)庫的轉(zhuǎn)儲(chǔ)和恢復(fù) 2)數(shù)據(jù)庫的安全性和完整性控制 3)數(shù)據(jù)庫的性能監(jiān)督、分析和改造 4)數(shù)據(jù)庫的重組和重構(gòu),數(shù)據(jù)庫安全控制模型,數(shù)據(jù)庫技術(shù)應(yīng)用,典型的關(guān)系數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品 ORACLE Microsoft SQL Server Microsoft Access,選擇關(guān)系DBMS產(chǎn)品時(shí)考慮的主要因素,數(shù)據(jù)庫應(yīng)用的規(guī)模、類型和用戶的數(shù)量 速度指標(biāo); 軟件、硬件平臺(tái)性價(jià)比; 開發(fā)者的經(jīng)驗(yàn)和習(xí)慣; 安全性要求; 對(duì)分布式應(yīng)用的支持等。,典型的數(shù)據(jù)庫應(yīng)用系統(tǒng)實(shí)例 航空售票系統(tǒng) 座位預(yù)定信息 座位分配、座位確認(rèn)、餐飲選擇等; 航班信息 航班號(hào)、飛機(jī)型號(hào)、機(jī)組號(hào)、起飛地、目的地、起飛時(shí)間、到達(dá)時(shí)間、飛行狀態(tài)等; 機(jī)票信息 票價(jià)、折扣、是否有票等。,典型的數(shù)據(jù)庫應(yīng)用系統(tǒng)實(shí)例 銀行業(yè)務(wù)系統(tǒng) 顧客信息 姓名、身份證號(hào)碼、地址、電話等信息; 賬戶信息 賬號(hào)、存款金額、余額、取款金額、日期等信息; 顧客與賬戶關(guān)系信息 身份證號(hào)碼、賬號(hào)等信息。,典型的數(shù)據(jù)庫應(yīng)用系統(tǒng)實(shí)例 超市業(yè)務(wù)系統(tǒng) 銷售信息 連鎖點(diǎn)、日期、時(shí)間、顧客、商品、數(shù)量、總價(jià)等; 商品信息 商品名稱、單價(jià)、進(jìn)貨數(shù)量、供應(yīng)商、商品類型、擺放位置等; 供應(yīng)商信息 供應(yīng)商名稱、地點(diǎn)、商品、信譽(yù)等。,典型的數(shù)據(jù)庫應(yīng)用系統(tǒng)實(shí)例 工廠的管理信息系統(tǒng) 銷售記錄 產(chǎn)品、服務(wù)、客戶、銷售人員、時(shí)間等; 雇員信息 姓名、地址、工資、津貼、所得稅款等; 財(cái)務(wù)信息 合同、應(yīng)收貨款、應(yīng)付貨款等。,典型的數(shù)據(jù)庫應(yīng)用系統(tǒng)實(shí)例 學(xué)校教學(xué)管理系統(tǒng) 學(xué)生信息 姓名、學(xué)號(hào)、性別、班級(jí)、年齡、宿舍、電話、E-mail地址等; 教師信息 姓名、工作證號(hào)、性別、年齡、學(xué)歷、教研室、住址、電話、E-mail地址等; 教室信息 教室號(hào)、位置、座位、類型等; 課程信息 課程名稱、指定教材、學(xué)時(shí)、學(xué)分等; 排課信息 課程名稱、教室、班級(jí)、教師名稱等。,典型的數(shù)據(jù)庫應(yīng)用系統(tǒng)實(shí)例 圖書管理系統(tǒng) 圖書信息 書號(hào)、書名、作者姓名、出版日期、類型、頁數(shù)、價(jià)格、出版社名稱等; 讀者信息 姓名、借書證號(hào)、性別、出生日期、學(xué)歷、住址、電話等; 借閱信息 借書證號(hào)、書名、借書日期、還書日期等。,5.3 關(guān)系數(shù)據(jù)語言 5.3.1 關(guān)系數(shù)據(jù)庫語言概述,SQL語言(Structured Query Language) :關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。對(duì)關(guān)系模型的發(fā)展和商用DBMS的研制起著重要的作用。 具有數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)更新、數(shù)據(jù)控制等功能。,,SQL發(fā)展歷史 1986年10月,ANSI批準(zhǔn)SQL作為關(guān)系數(shù)據(jù)庫語言的美國(guó)標(biāo)準(zhǔn),并公布了SQL的標(biāo)準(zhǔn)文本——“數(shù)據(jù)庫語言SQL”(簡(jiǎn)稱SQL86),1987國(guó)際標(biāo)準(zhǔn)化組織ISO通過了這一標(biāo)準(zhǔn); 1989年公布了SQL89標(biāo)準(zhǔn),增加了對(duì)完整性約束的支持; 1992年公布了SQL92標(biāo)準(zhǔn); 1996年公布了SQL96標(biāo)準(zhǔn); 1999年公布了SQL99標(biāo)準(zhǔn); 2003年公布了SQL2003標(biāo)準(zhǔn); SQL標(biāo)準(zhǔn)文本的修改和完善還在繼續(xù)進(jìn)行……,(1)一體化。SQL集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML和數(shù)據(jù)控制語言DCL為一體。 (2)使用方式靈活。SQL既可以作為自含型語言供用戶在終端上直接與系統(tǒng)進(jìn)行交互,又可作為宿主型語言,嵌入某種高級(jí)語言中使用,以方便數(shù)據(jù)處理。 (3)高度非過程化。 (4)語言簡(jiǎn)潔,易學(xué)易用。,SQL的特點(diǎn):,SQL數(shù)據(jù)庫的體系結(jié)構(gòu),,SQL語句匯總,,1、數(shù)據(jù)定義,數(shù)據(jù)定義包括對(duì)基本表(table)、視圖(view)和索引(index)等數(shù)據(jù)庫對(duì)象進(jìn)行定義、修改和刪除。 基本表是數(shù)據(jù)庫中數(shù)據(jù)存儲(chǔ)的基本單位,一個(gè)關(guān)系對(duì)應(yīng)一個(gè)表。 視圖是從基本表或其他視圖中導(dǎo)出的表,它本身不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫中,數(shù)據(jù)庫只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù),數(shù)據(jù)仍存放在導(dǎo)出視圖的基本表中。 索引是為表而創(chuàng)建的。定義一個(gè)合適的索引可以使查詢速度提高幾倍。,數(shù)據(jù)類型: INTEGER或INT 全字長(zhǎng)二進(jìn)制整數(shù) SMALLINT 半字長(zhǎng)二進(jìn)制整數(shù) DECIMAL(p[, q]) 十進(jìn)制數(shù) FLOAT 浮點(diǎn)數(shù) CHAR(n) 長(zhǎng)度為n的定長(zhǎng)字符串 VARCHAR(n) 最大長(zhǎng)度為n的變長(zhǎng)字符串 DATE 日期型,格式Y(jié)YYY-MM-DD TIME 時(shí)間型,格式為HH.MM.SS.XX 常用語句: CREATE TABLE DROP TABLE CREATE VIEW DROP VIEW CREATE INDEX DROP INDEX,語法: CREATE TABLE 表名( 列名 數(shù)據(jù)類型 [DEFAULT 缺省值] [NOT NULL] [, 列名 數(shù)據(jù)類型 [DEFAULT 缺省值] [NOT NULL] … ] [, PRIMARY KEY(列名 [, 列名] …)] [, FOREIGN KEY (列名 [, 列名] …) REFERENCES 表名(列名 [, 列名] …)] [,CHECK (條件表達(dá)式)] ) 注:句法中[ ]表示該成分是可選項(xiàng)。,CREATE TABLE語句,舉例,設(shè)教學(xué)數(shù)據(jù)庫有三個(gè)關(guān)系: STUDENT (sno, sname, ssex, sage, sdept) COURSE (cno, cname, credit) SC (sno, cno, grade) 基本表STUDENT可用下列語句創(chuàng)建: CREATE TABLE STUDENT ( sno CHAR(4) NOT NULL, sname CHAR (8) NOT NULL, sage SMALLINT, ssex CHAR(1), sdept CHAR(30), PRIMARY KEY(Sno)) ;,主鍵約束,CREATE TABLE COURSE ( cno CHAR(4) PRIMARY KEY, cname CHAR(50) NOT NULL, credit SMALLINT ) ; CREATE TABLE SC ( sno CHAR(4) NOT NULL, cno CHAR(4) NOT NULL, grade SMALLINT, PRIMARY KEY(sno, cno), FOREIGN KEY(sno) REFERENCES STUDENT(sno), FOREIGN KEY(cno) REFERENCES COURSE(cno), CHECK (grade= 0) ) ;,外鍵約束,自定義約束,修改基本表:ALERT TABLE語句,ALTER TABLE [ADD [] [DROP ] [MODIFY ]; :指定需要修改的基本表名 ADD子句:用于增加新列、定義新列的類型和新列的完整性約束。 DROP子句:用于刪除指定的完整性約束。 MODIFY子句:用于修改原有的列定義,可以修改列名,列的數(shù)據(jù)類型。,DROP TABLE語句,語法: DROP TABLE 表名 [CASCADE | RESTRICT] 注: 撤消基本表后,基本表的定義、表中的數(shù)據(jù)、表上的索引、以及由此表導(dǎo)出的視圖的定義都被刪除。 例: DROP TABLE SC ; DROP TABLE COURSE ; DROP TABLE STUDENT ;,建立視圖,語法: CREATE VIEW [([,]…)] AS [WITH CHECK OPTION]; 例:建立信息系學(xué)生的視圖 CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept=‘IS’,數(shù)據(jù)查詢語句,數(shù)據(jù)查詢語句是SQL語言中最復(fù)雜的部分,允許用戶以靈活的方式表達(dá)查詢意圖,并返回?cái)?shù)據(jù)庫中符合條件的數(shù)據(jù)。 語法: SELECT [ALL | DISTINCT]目標(biāo)表的列名或列表達(dá)式序列 FROM 基本表和(或)視圖序列 [WHERE 行條件表達(dá)式] [GROUP BY 列名序列 [HAVING 條件表達(dá)式] ] [ORDER BY 列名[ASC|DESC]…] 注:SELECT語句中,WHERE子句稱為行條件子句,GROUP子句稱為分組子句,HAVING子句稱為組條件子句,ORDER子句稱為排序子句。,舉例(簡(jiǎn)單查詢),例1:查詢?nèi)繉W(xué)生的所有信息。 SELECT * FROM STUDENT; 例2:查詢?nèi)勘贿x課程的課程號(hào)。 SELECT DISTINCT cno FROM SC; 例3:列出選修了課程號(hào)為‘C6’的所有學(xué)生的學(xué)號(hào)和成績(jī),并按分?jǐn)?shù)的降序排列。 SELECT sno, grade FROM SC WHERE cno=C6 ORDER BY grade DESC;,例5.3.8~10,表達(dá)查詢條件的謂詞,比較謂詞:=,,=, ; 例:cno=C6 IN謂詞:適合于離散有窮集合的查詢; 例:性別 IN (’男’,’女’) LIKE謂詞:適合于字符串的模糊查詢(匹配符%_) 例:書名 LIKE ‘?dāng)?shù)據(jù)庫%’ NULL謂詞:判斷空值 例:成績(jī) IS NULL BETWEEN謂詞:適合數(shù)值型字段,可以定義一個(gè)閉區(qū)間;例:成績(jī) BETWEEN 80 AND 90 多重條件查詢,例5.3.11~12,例5.3.13,例5.3.14,例5.3.15,例5.3.16,例5.3.17,舉例(使用謂詞查詢),例4:查詢信息系(IS)、數(shù)學(xué)系(MA)以及計(jì)算機(jī)系(CS)學(xué)生的姓名和性別。 SELECT sname, ssex FROM STUDENT WHERE sdept IN(‘IS’,’MA’,’CS’); 例5:查詢還沒有分系的學(xué)生的學(xué)號(hào)和姓名。 SELECT sno, sname FROM STUDENT WHERE sdept IS NULL; 例6:查詢所有姓王的學(xué)生的姓名、學(xué)號(hào)和性別。 SELECT sname, sno, ssex FROM STUDENT WHERE sname LIKE ’王%’; 注:%代表任意長(zhǎng)度的字符串 _(下劃線)代表任意單個(gè)字符,舉例(使用謂詞查詢),例7:查詢課程名以DB開頭且倒數(shù)第3個(gè)字符為I的課程的所有信息。 SELECT * FROM COURSE WHERE cname LIKE ’DB%I_ _’; 例8:查詢年齡在20到23歲之間的學(xué)生姓名、系別和年齡。 SELECT sname,sdept,sage FROM STUDENT WHERE sage BETWEEN 20 AND 23;,集函數(shù)和分組,集函數(shù)是面向一個(gè)集合的求值函數(shù)。 SUM:求總和 AVG:求平均值 COUNT:求集合中元素的個(gè)數(shù) MAX:最大值 MIN:最小值 分組就是對(duì)查詢的結(jié)果進(jìn)行分類。 GROUP子句可以按某些屬性的值對(duì)查詢結(jié)果進(jìn)行分組。 HAVING子句可以對(duì)分組后的結(jié)果作進(jìn)一步的篩選。 當(dāng)查詢語句中有GROUP子句時(shí),集函數(shù)作用的對(duì)象是一個(gè)分組的結(jié)果,而不是整個(gè)查詢的結(jié)果。,舉例(分組查詢),例9:查詢每門課程的課程號(hào)和平均成績(jī)。 SELECT cno, AVG(grade) FROM SC GROUP BY cno; 例10:查詢選修了三門以上課程的學(xué)生學(xué)號(hào)。 SELECT sno FROM SC GROUP BY sno HAVING COUNT(*)3; 注:WHERE子句與HAVING子句的區(qū)別在于WHERE子句作用于基本表或視圖,從中選擇滿足條件的元組;HAVING短語作用于組,從中選擇滿足條件的組。,例5.3.19~20,連接查詢,當(dāng)查詢的信息涉及到多個(gè)表中的數(shù)據(jù)時(shí),要將這些表按某種條件連接起來。 例10:求“數(shù)據(jù)結(jié)構(gòu)”課程成績(jī)大于85分的學(xué)生姓名和成績(jī),結(jié)果按成績(jī)降序排列。 SELECT STUDENT.sname,grade FROM STUDENT,SC,COURSE WHERE STUDENT.sno = SC.sno AND SC.cno = COURSE.cno AND COURSE.cname = 數(shù)據(jù)結(jié)構(gòu) AND SC.grade 85 ORDER BY grade DESC; 注:當(dāng)不同的表中有同名屬性時(shí),屬性名前要用表名限定。,例5.3.21~23,數(shù)據(jù)更新,數(shù)據(jù)更新包括數(shù)據(jù)插入、數(shù)據(jù)刪除和數(shù)據(jù)修改三種操作。 數(shù)據(jù)插入 元組值的插入 語法:INSERT INTO 基本表[(列表)] VALUES(元組值) 作用:將一條元組值插入到表中。 例1:往基本表SC中插入一個(gè)元組值 INSERT INTO SC VALUES(‘S004’,‘?dāng)?shù)據(jù)庫’,90); 例2:往基本表SC中插入部分元組值 INSERT INTO SC(sno, cno) VALUES(‘S004’,‘物理’); 查詢結(jié)果的插入 句法: INSERT INTO 基本表名[(列名表)] 子查詢 作用:將子查詢返回的結(jié)果數(shù)據(jù)集插入到表中。 要求:查詢語句的目標(biāo)列必須與INTO子句匹配。,例3:將平均成績(jī)大于80分的學(xué)生學(xué)號(hào)和平均成績(jī)存入另一個(gè)基本表S_GRADE(Sno, Avg_grade)。 INSERT INTO S_GRADE (Sno, Avg_grade) SELECT Sno, AVG(grade) FROM SC GROUP BY sno HAVING AVG(grade)80; 數(shù)據(jù)刪除 語法:DELETE FROM 基本表 [WHERE 條件表達(dá)式] 作用:從表中刪除符合WHERE子句中刪除條件的元組;若WHERE子句缺省,則表示要?jiǎng)h除表中的所有元組。 例4:刪除學(xué)號(hào)為‘S001’的學(xué)生信息。 DELETE FROM STUDENT WHERE sno=‘S001’;,數(shù)據(jù)修改 語法: UPDATE 基本表名 SET 列名=值表達(dá)式 [,列名=值表達(dá)式…] [WHERE 條件表達(dá)式] 作用:修改指定表中滿足WHERE子句條件的元組,若WHERE子句缺省,則表示對(duì)所有元組進(jìn)行修改。 例5:把所有學(xué)生的年齡加1。 UPDATE STUDENT SET Sage = Sage+1; 例6:把課程號(hào)為‘C5’的課程名改為“電子商務(wù)”。 UPDATE COURSE SET Cname=電子商務(wù) WHERE Cno = C5;,視 圖,視圖是從一個(gè)或幾個(gè)基本表(或視圖)導(dǎo)出的一個(gè)虛表。 數(shù)據(jù)庫中只存放視圖的定義而不存放視圖的數(shù)據(jù),這些數(shù)據(jù)仍放在原來的基表中。當(dāng)基表中的數(shù)據(jù)發(fā)生變化時(shí)從視圖中查出的數(shù)據(jù)也隨之改變了。 視圖一經(jīng)定義就可以對(duì)其進(jìn)行查詢,但對(duì)視圖的更新操作有一定的限制。 視圖的定義 語法: CREATE VIEW 視圖名 [(列名[,列名]…)] AS 子查詢 [WITH CHECK OPTION],例1:建立計(jì)算機(jī)學(xué)院98級(jí)學(xué)生視圖。 CREATE VIEW CS_STUDENT(sno, sname) AS SELECT sno, sname FROM STUDENT WHERE sdept = ‘CS’ WITH CHECK OPTION; 例2:建立計(jì)算機(jī)學(xué)院選修了5號(hào)課程的學(xué)生視圖。 CREATE VIEW CS_S1(sno,sname,grade) AS SELECT STUDENT.sno,sname,grade FROM STUDENT, SC WHERE sdept=’CS’ AND STUDENT.sno=SC.sno AND cno=’5’;,視圖的查詢 對(duì)視圖的查詢與對(duì)表的查詢完全一樣。 例如:在計(jì)算機(jī)學(xué)院學(xué)生的視圖CS_S1中找學(xué)習(xí)了5號(hào)課程且成績(jī)?yōu)?5分的學(xué)號(hào)、姓名。 SELECT sno, sname FROM CS_S2 WHERE grade=95; 視圖的撤消 語法: DROP VIEW 視圖名 作用:從數(shù)據(jù)庫中刪除一個(gè)視圖的定義信息。 例如:撤消視圖CS_S1。 DROP VIEW CS_S1;,SQL的核心動(dòng)詞,例5.3.8 查詢指定列:查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。 SELECT Sno,Sname FROM Student; 例5.3.9 查詢?nèi)苛校翰樵內(nèi)w學(xué)生的詳細(xì)記錄。 SELECT * FROM Student; 例5.3.11 查計(jì)算機(jī)系(CS)全體學(xué)生的姓名。 SELECT Sname FROM Student WHERE Sdept=’CS’;,SQL舉例:,連接查詢,例5.3.21查詢每個(gè)學(xué)生及其選修課程的情況。 SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno=SC.Sno;,例5.3.27 將一個(gè)新學(xué)生記錄(學(xué)號(hào):20040020;姓名:陳冬;性別:男; 所在系:IS;年齡:18歲)插入Student表中。 INSERT INTO Student VALUES(‘20040020’,’陳冬’,‘男’,18,‘IS’); 例5.3.29 將學(xué)生20040001的年齡改為22歲。 UPDATE Student SET Sage=22 WHERE Sno=‘20040001’; 例5.3.31 刪除學(xué)號(hào)為20040019的學(xué)生記錄。 DELETE FROM Student WHERE Sno=‘20040019’;,5.4 數(shù)據(jù)庫技術(shù)進(jìn)展,1、主流數(shù)據(jù)庫系統(tǒng) dBase/FoxBase、Access、MySQL… Oracle、SQL Server、SyBase、Informix…,2、當(dāng)前數(shù)據(jù)庫技術(shù)發(fā)展的主要特征,分布式數(shù)據(jù)庫 并行數(shù)據(jù)庫 數(shù)據(jù)倉庫,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)庫系統(tǒng) 數(shù)據(jù)庫 系統(tǒng) PPT 課件
鏈接地址:http://m.appdesigncorp.com/p-3136171.html