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