第2章 數(shù)據(jù)庫(kù)系統(tǒng)基本原理.ppt_第1頁(yè)
第2章 數(shù)據(jù)庫(kù)系統(tǒng)基本原理.ppt_第2頁(yè)
第2章 數(shù)據(jù)庫(kù)系統(tǒng)基本原理.ppt_第3頁(yè)
第2章 數(shù)據(jù)庫(kù)系統(tǒng)基本原理.ppt_第4頁(yè)
第2章 數(shù)據(jù)庫(kù)系統(tǒng)基本原理.ppt_第5頁(yè)
已閱讀5頁(yè),還剩90頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章 數(shù)據(jù)庫(kù)系統(tǒng)基本原理,2011.2,學(xué)習(xí)重點(diǎn),l層次模型、網(wǎng)狀模型和關(guān)系模型及其各自的優(yōu)缺點(diǎn) l學(xué)會(huì)使用常用的SQL語(yǔ)言 l數(shù)據(jù)庫(kù)設(shè)計(jì)的基本步驟 l事務(wù)和并發(fā)的概念 l數(shù)據(jù)庫(kù)恢復(fù)技術(shù),21 數(shù)據(jù)模型,數(shù)據(jù)模型(Data Model)是一種現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象,是對(duì)現(xiàn)實(shí)世界的模擬。也就是說用數(shù)據(jù)模型可以抽象、表示和處理現(xiàn)實(shí)中的數(shù)據(jù)和信息。 數(shù)據(jù)模型應(yīng)滿足三方面的要求: (1)能比較真實(shí)地模擬現(xiàn)實(shí)世界; (2)容易被人們理解; (3)便于在計(jì)算機(jī)上實(shí)現(xiàn)。,211 數(shù)據(jù)模型概述,目前模型劃分為概念模型和數(shù)據(jù)模型兩個(gè)層次。 概念模型也稱為信息模型,它是按用戶的觀點(diǎn)對(duì)數(shù)據(jù)和信息建模型,主要用于數(shù)

2、據(jù)庫(kù)設(shè)計(jì)。 數(shù)據(jù)模型是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模,主要用于DBMS的實(shí)現(xiàn),主要包括網(wǎng)狀模型、層次模型和關(guān)系模型等。,數(shù)據(jù)模型組成,(1)數(shù)據(jù)結(jié)構(gòu) 它是指數(shù)據(jù)庫(kù)中數(shù)據(jù)的有關(guān)性質(zhì)和數(shù)據(jù)之間的聯(lián)系,它是對(duì)系統(tǒng)靜態(tài)特性的描述。例如:在學(xué)生管理系統(tǒng)中,學(xué)生的基本信息包括學(xué)號(hào)、姓名、性別、出身日期、系別、專業(yè)等等, (2)數(shù)據(jù)操作 它是指對(duì)數(shù)據(jù)庫(kù)中允許執(zhí)行的操作的集合。例如:對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行插入、刪除、修改和檢索等操作。數(shù)據(jù)操作是對(duì)系統(tǒng)動(dòng)態(tài)特性的描述。 (3)數(shù)據(jù)的約束條件 它是一組完整性規(guī)則的集合。,212 概念模型,概念模型是面向現(xiàn)實(shí)世界的,而不是面向?qū)崿F(xiàn),它是為了有效和自然地模擬現(xiàn)實(shí)世界,是數(shù)

3、據(jù)庫(kù)設(shè)計(jì)人員和用戶之間進(jìn)行交流的語(yǔ)言,是數(shù)據(jù)庫(kù)設(shè)計(jì)的有力工具。,1基本概念,(1)實(shí)體 實(shí)體是客觀存在并可相互區(qū)別的事物。例如:一個(gè)學(xué)生、一位教師或是一門課程、一個(gè)單位等都是實(shí)體。具有相同的某些性質(zhì)的實(shí)體集合稱為實(shí)體集。例如:全體同學(xué)是一個(gè)實(shí)體集。 (2)屬性 實(shí)體所具有的某一特性稱為屬性。一個(gè)實(shí)體可以由若干個(gè)屬性來描述。例如:學(xué)生具有姓名、學(xué)號(hào)、性別等屬性。每個(gè)屬性都有取值范圍,屬性的取值范圍稱為該屬性的域。例如:性別的域?yàn)椋?,女)?能夠唯一標(biāo)識(shí)實(shí)體的屬性或?qū)傩约Q為碼。例如,學(xué)生的學(xué)號(hào)是學(xué)生實(shí)體的碼。,1基本概念,(3)聯(lián)系 兩個(gè)實(shí)體之間的聯(lián)系可分為三類: 一對(duì)一聯(lián)系(1:1) 一對(duì)多

4、聯(lián)系(1:n) 多對(duì)多聯(lián)系(m:n),2E-R圖,E-R圖描述概念模型,E-R方法也稱為E-R模型。 例如,在學(xué)生選課的概念模型中,涉及到如下實(shí)體: 學(xué)生:屬性有學(xué)號(hào)、姓名、性別、出生日期、系別、專業(yè)。學(xué)生實(shí)體及其屬性如圖所示。,2E-R圖, 課程:課程號(hào)、課程名、學(xué)分。課程實(shí)體及其屬性如圖所示。,2E-R圖,學(xué)生實(shí)體與課程實(shí)體之間是選課的關(guān)系,由于每個(gè)學(xué)生可以選多門課程,而每門課程又可以由多門學(xué)生選修,因此,它們之間是多對(duì)多的關(guān)系。學(xué)生選課E-R圖如圖所示。,213層次數(shù)據(jù)模型,1模型結(jié)構(gòu) 層次模型用樹形結(jié)構(gòu)表示各類實(shí)體以及實(shí)體間的聯(lián)系。 在數(shù)據(jù)庫(kù)中滿足下面兩個(gè)條件的基本層次聯(lián)系的集合是層次

5、模型: (1)有且只有一個(gè)結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),這個(gè)結(jié)點(diǎn)自然為根結(jié)點(diǎn); (2)根結(jié)點(diǎn)以外的其他結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)。,1模型結(jié)構(gòu),例如,學(xué)校人員數(shù)據(jù)庫(kù)的層次模型如圖所示。,2層次數(shù)據(jù)模型的優(yōu)缺點(diǎn),層次模型的主要優(yōu)點(diǎn): (1)層次數(shù)據(jù)模型本身比較簡(jiǎn)單。 (2)層次模型對(duì)具有一對(duì)多的層次關(guān)系的部門描述非常自然、直觀,容易理解。 (3)層次數(shù)據(jù)模型提供了良好的完整性支持。 層次模型的主要缺點(diǎn): (1)在現(xiàn)實(shí)世界中有很多非層次性的聯(lián)系,如多對(duì)多的聯(lián)系,一個(gè)結(jié)點(diǎn)具有多個(gè)父結(jié)點(diǎn)等,層次模型表示這類聯(lián)系的方法很笨拙。 (2)對(duì)于插入和刪除操作的限制比較多。 (3)查詢子結(jié)點(diǎn)必須通過父結(jié)點(diǎn)。 (4)由于結(jié)構(gòu)嚴(yán)

6、密,層次命令趨于程序化。,214網(wǎng)狀數(shù)據(jù)模型,1模型結(jié)構(gòu) 網(wǎng)狀數(shù)據(jù)庫(kù)采用網(wǎng)狀模型作為數(shù)據(jù)的組織方式,網(wǎng)狀模型允許多個(gè)結(jié)點(diǎn)沒有父結(jié)點(diǎn),允許結(jié)點(diǎn)有多個(gè)父結(jié)點(diǎn),允許兩個(gè)結(jié)點(diǎn)之間有多種聯(lián)系。也就是說把滿足以下兩個(gè)條件的基本聯(lián)系集合稱為網(wǎng)狀模型: (1)允許一個(gè)以上的結(jié)點(diǎn)無(wú)父結(jié)點(diǎn); (2)一個(gè)結(jié)點(diǎn)可以有多于一個(gè)的雙親。 實(shí)際上層次模型是網(wǎng)狀模型的一個(gè)特例。,1模型結(jié)構(gòu),例如,一名學(xué)生選修多門課程可用“學(xué)生選課”的系表示它們之間的聯(lián)系。學(xué)生選課的網(wǎng)狀模型如圖所示。,2網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點(diǎn),網(wǎng)狀模型的主要優(yōu)點(diǎn): (1)狀模型能夠更直接地描述現(xiàn)實(shí)世界。 (2)具有良好的性能,存取效率較高。 網(wǎng)狀模型的主要缺點(diǎn)

7、: (1)網(wǎng)狀數(shù)據(jù)模型結(jié)構(gòu)比較復(fù)雜,應(yīng)用越大,數(shù)據(jù)庫(kù)的結(jié)構(gòu)越復(fù)雜。 (2)網(wǎng)狀數(shù)據(jù)庫(kù)使用復(fù)雜,用戶不容易掌握。,215關(guān)系數(shù)據(jù)模型,1模型結(jié)構(gòu) 關(guān)系數(shù)據(jù)模型是用二維表格數(shù)據(jù)表示實(shí)體和實(shí)體間的聯(lián)系。例如,學(xué)生基本信息可用表2-1表示。 學(xué)生基本信息表,2關(guān)系數(shù)據(jù)模型的優(yōu)缺點(diǎn),關(guān)系模型的主要優(yōu)點(diǎn): (1)關(guān)系模型是建立在嚴(yán)格的數(shù)學(xué)概念基礎(chǔ)上的,以集合論、關(guān)系代數(shù)為基礎(chǔ)。 (2)關(guān)系模型的概念單一,數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單用戶易懂易用。 (3)具有較高的數(shù)據(jù)獨(dú)立性。 關(guān)系模型的主要缺點(diǎn)是運(yùn)行效率不夠高。,22 SQL語(yǔ)言基礎(chǔ),SQL語(yǔ)言是一個(gè)綜合的、功能極強(qiáng)而又簡(jiǎn)單易學(xué)的語(yǔ)言,它具有數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱

8、和數(shù)據(jù)控制的功能。,221 基本概念,在SQL中一個(gè)關(guān)系對(duì)應(yīng)一個(gè)二維表,基本表對(duì)應(yīng)關(guān)系數(shù)據(jù)庫(kù)的模式。,222 數(shù)據(jù)定義功能,SQL的數(shù)據(jù)定義功能包括定義表、定義視圖和定義索引,并且可以修改表結(jié)構(gòu)、刪除表、刪除視圖、刪除索引。,1定義表,定義表的功能是創(chuàng)建一個(gè)新的空表,它由若干個(gè)屬性(列)組成。 格式:CREATE TABLE ( , , ); 注意:在默認(rèn)情況下,SQL語(yǔ)言不分大小寫。,1定義表,例2-1 建立一個(gè)學(xué)生基本信息表Student,它由學(xué)號(hào)Sno、姓名Sname、性別Ssex、出身年月birthday、所在系Sdept五個(gè)屬性組成。其中學(xué)號(hào)不能為空,值是唯一的。 創(chuàng)建Student

9、表的SQL語(yǔ)句如下: CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) , Ssex CHAR(1) , Birthday Malldatetime, Sdept CHAR(15);,1定義表,例2-2 建立一個(gè)課程表Course,它由課程號(hào)Cno,課程名Cname,學(xué)分Ccredit和學(xué)時(shí)Period組成,其中Cno為主碼, Cname非空,學(xué)分Ccredit和學(xué)時(shí)Period必須大于0。 創(chuàng)建Course表的SQL語(yǔ)句如下: CREATE TABLE Course (Cno CHAR(4) , Cname C

10、HAR(20) NOT NULL, Ccredit int CHECK(Ccredit0), Period int CHECK(Period0), Primary key ( Cno);,2修改表結(jié)構(gòu),修改表結(jié)構(gòu)的功能是對(duì)表進(jìn)行添加列、刪除列、修改列定義等對(duì)表結(jié)構(gòu)進(jìn)行修改。 格式:ALTER TABLE ADD 完整性約束 DROP MODIFY ;,2修改表結(jié)構(gòu),例2-3 在Student表中加入出身年月列Birth,其數(shù)據(jù)類型為日期型。 修改Student 表結(jié)構(gòu)的SQL語(yǔ)句如下: ALTER TABLE Student ADD Birth DATE; 注意:不論基本表中原來是否已有數(shù)據(jù),

11、新增加的列為空值。 例2-4 將課程表Course中學(xué)分Ccredit的數(shù)據(jù)類型改為半字長(zhǎng)整數(shù)。 ALTER TABLE Course MODIFY Ccredit SMALLINT; 注:修改原有的列定義有可能會(huì)破壞已有數(shù)據(jù),3刪除表,刪除表的功能是將已有的表刪除。 格式:DROP TABLE ; 注:表被刪除后,原表中的數(shù)據(jù)、原表上的索引都被刪除,但原表上的視圖往往仍然保留,但無(wú)法引用。 例2-5 刪除Student表 DROP TABLE Student ;,4建立和刪除索引,為了加快查詢速度可以建立索引。 (1)建立索引 語(yǔ)句格式 CREATE UNIQUE CLUSTER INDEX

12、 ON (, );,(1)建立索引,例2-6 為學(xué)生-課程數(shù)據(jù)庫(kù)中的Student,Course,SC三個(gè)表建立索引。其中Student表按學(xué)號(hào)升序建唯一索引,Course表按課程號(hào)升序建唯一索引,SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);,4建立和刪除索引,(2)唯一值索引 對(duì)于已含重復(fù)值的屬性列不能建UNIQUE索引,對(duì)某

13、個(gè)列建立UNIQUE索引后,插入新記錄時(shí)DBMS會(huì)自動(dòng)檢查新記錄在該列上是否取了重復(fù)值。這相當(dāng)于增加了一個(gè)UNIQUE約束。,4建立和刪除索引,(3)聚簇索引 建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性值的升序或降序存放。也即聚簇索引的索引項(xiàng)順序與表中記錄的物理順序一致。 例:CREATE CLUSTER INDEX Stusname ON Student(Sname); 在Student表的Sname(姓名)列上建立一個(gè)聚簇索引,而且Student表中的記錄將按照Sname值的升序存放,在一個(gè)基本表上最多只能建立一個(gè)聚簇索引,聚簇索引的用途:對(duì)于某些類型的查詢,可以提高查詢效率。 聚簇

14、索引的適用范圍:很少對(duì)基表進(jìn)行增刪操作, 很少對(duì)其中的變長(zhǎng)列進(jìn)行修改操作。,4建立和刪除索引,(4)刪除索引 DROP INDEX ; 刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。 例2-7 刪除Student表的Stusname索引。 DROP INDEX Stusname ;,223 數(shù)據(jù)查詢功能,數(shù)據(jù)庫(kù)查詢功能是SQL語(yǔ)言的核心功能,數(shù)據(jù)查詢語(yǔ)句是SQL使用得最多的語(yǔ)名,其一般格式為: SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,1. 單表查詢,(1)選擇表中的若干列 例2-8 在S

15、tudent表中查詢?nèi)w學(xué)生的學(xué)號(hào)和姓名。 SELECT Sno,Sname FROM Student; 例2-9 查詢Student表中的所有屬性。 SELECT Sno,Sname,Ssex,Sdept FROM Student; 或 SELECT * FROM Student ; 例2-10 在Student表中查詢?nèi)w學(xué)生的姓名和年齡。 SELECT Sname,2005-year(birthday) as Sage FROM Student;,Sname Sage - - 金小巧 19 王大海 19 張豐豐 20 胡 麗 19 楊建國(guó) 19 李 凱 20 吳 偉 19 蔣立朋 19,

16、輸出結(jié)果:,(2)選擇表中的若干元組, 使用短語(yǔ)ALL與DISTINCT 例2-11 在SC表中查詢有成績(jī)的學(xué)生的學(xué)號(hào)。 如果用 SELECT Sno FROM SC; 或(默認(rèn) ALL) SELECT ALL Sno FROM SC; 查詢結(jié)果中會(huì)出現(xiàn)一些重復(fù)的學(xué)號(hào),這時(shí)需要使用DISTINCT短語(yǔ),去掉重復(fù)的行。 SELECT DISTINCT Sno FROM SC;,短語(yǔ)ALL與DISTINCT比較,Sno Sno - - 20040101 20040101 20040102 20040102 20040103 20040103 20040104 20040104 20040104 2

17、0040105 20040105 20040106 20040105 20040107 20040106 20040108 20040107 20040108 20040108 20040108 20040108 (a) (b), 查詢滿足條件的元組,查詢語(yǔ)句中使用WHERE子句可以查詢出滿足指定條件的元組。 WHERE子句常用的查詢條件有: l 比較大小 在WHERE子句的中使用的比較運(yùn)算符有: =,=,!,!= 60;, 查詢滿足條件的元組,l 確定范圍 確定查詢范圍使用謂詞BETWEEN AND 或 NOT BETWEEN AND ,AND前面是范圍的下限,后面的是范圍的上限。 例2-1

18、3 查詢有成績(jī)?cè)?0至100(包括90分和100分)之間的學(xué)生的學(xué)號(hào)。 SELECT Sno FROM SC WHERE Score BETWEEN 90 AND 100;, 查詢滿足條件的元組,l 確定集合 使用謂詞IN 和NOT IN 可以查找屬性值屬于指定集合的元組。 其中: 是用逗號(hào)分隔的一組值。 例2-14 查詢化學(xué)系和計(jì)算機(jī)系學(xué)生的姓名和學(xué)號(hào)。 SELECT Sno,,Sname FROM Student WHERE Sdept IN ( 化學(xué)系 ,計(jì)算機(jī)系 ); 例2-15 查詢既不是化學(xué)系,也不是計(jì)算機(jī)系的學(xué)生的姓名和學(xué)號(hào)。 SELECT Sname ,Sno FROM Stu

19、dent WHERE Sdept NOT IN ( 化學(xué)系,計(jì)算機(jī)系);, 查詢滿足條件的元組,字符串匹配:字符串匹配用謂詞LIKE實(shí)現(xiàn)。 格式: NOT LIKE ESCAPE 當(dāng)匹配模板為固定字符串時(shí),可以用 = 運(yùn)算符取代 LIKE 謂詞,用 != 或 運(yùn)算符取代 NOT LIKE 謂詞。 通配符是可以代替任何一個(gè)字符或字符串的符號(hào),其中: % (百分號(hào)):代表任意長(zhǎng)度(長(zhǎng)度可以為0)的字符串。 例如,m%n表示以m開頭,以n結(jié)尾的任意長(zhǎng)度的字符串。如min,main,man,mn 等都滿足該匹配串。 _ (下橫線):代表任意單個(gè)字符。 例如,m_n表示以m開頭,以n結(jié)尾的長(zhǎng)度為3的任意

20、字符串。如min,man都滿足該匹配串,但是main和mn不滿足該匹配串。 匹配模板為固定字符串, 查詢滿足條件的元組,例2-16 查詢學(xué)號(hào)為20040106的學(xué)生的詳細(xì)情況。 SELECT * FROM Student WHERE Sno LIKE 20040106 ; 或者:SELECT * FROM Student WHERE Sno = 20040106 ; 例2-17 查詢所有姓金學(xué)生的姓名、學(xué)號(hào)和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 金%;, 查詢滿足條件的元組,例2-18 查詢姓金且全名為三個(gè)漢字的學(xué)生的姓

21、名。 SELECT Sname FROM Student WHERE Sname LIKE 金_ _; 例2-19 查詢所有不姓金的學(xué)生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 金%;, 查詢滿足條件的元組,例2-20 假設(shè)Course表中有一課程為DB_Design,查詢DB_Design課程的課程號(hào)和學(xué)分。 SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE 查詢空值時(shí)使用謂詞 IS NULL 或 IS NOT NULL,這里 “IS

22、NULL” 不能用 “= NULL” 代替。 例2-21 某些學(xué)生沒有參加考試,所以沒有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)要用空值查詢。 SELECT Sno,Cno FROM SC WHERE Score IS NULL;, 多重條件查詢,當(dāng)查詢條件有多個(gè)時(shí),可以用邏輯運(yùn)算符AND和 OR來聯(lián)結(jié)多個(gè)查詢條件,AND的優(yōu)先級(jí)高于OR,括號(hào)中運(yùn)算符的優(yōu)先級(jí)最高。 例2-13中查詢有成績(jī)?cè)?0至100(包括90分和100分)之間的學(xué)生的學(xué)號(hào)也可以用以下語(yǔ)句實(shí)現(xiàn)。 SELECT Sno FROM SC WHERE Score =90 AND Score=100;,(3) 查詢結(jié)果排序,

23、例2-22 查詢選修了280010號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。 SELECT Sno,Score FROM SC WHERE Cno= 280010 ORDER BY Score DESC ;,查詢結(jié)果 Sno Grade - - 20040103 92 20040107 88 20040101 86 20040106 61,(4)使用函數(shù),常用的有: 計(jì)數(shù) CCOUNT(DISTINCT|ALL *) 統(tǒng)計(jì)元組個(gè)數(shù) C COUNT(DISTINCT|ALL )統(tǒng)計(jì)一列中值的個(gè)數(shù) 計(jì)算總和 SSUM(DISTINCT|ALL )計(jì)算一列數(shù)值型數(shù)值的總和 計(jì)算平均值 AV

24、G(DISTINCT|ALL )計(jì)算一列數(shù)值型數(shù)值的平均數(shù) 求最大值 MAX(DISTINCT|ALL ) 求最大值 求最小值 MIN(DISTINCT|ALL ) 求一最小值 其中:DISTINCT短語(yǔ)在計(jì)算時(shí)要取消指定列中的重復(fù)值 ALL短語(yǔ):不取消重復(fù)值,ALL為缺省值,例2-23 查詢學(xué)生總?cè)藬?shù)。 SELECT COUNT(*) FROM Student; 例2-24 查詢選修了課程的學(xué)生人數(shù)。 SELECT COUNT(DISTINCT Sno) FROM SC; 用DISTINCT以避免重復(fù)計(jì)算學(xué)生人數(shù) 例2-25 計(jì)算280010號(hào)課程的學(xué)生平均成績(jī)。 SELECT AVG(Gr

25、ade) FROM SC WHERE Cno= 280010 ; 例2-26 查詢選修280010號(hào)課程的學(xué)生最高分?jǐn)?shù)。 SELECT MAX(Grade) FROM SC,(4)使用函數(shù),(5)對(duì)查詢結(jié)果分組,例2-27 求各個(gè)系相應(yīng)的學(xué)生人數(shù)。 SELECT Sdept as 系名,COUNT(Sno) as 學(xué)生人數(shù) FROM Student GROUP BY Sdept; 查詢結(jié)果: 系名 學(xué)生人數(shù) 英語(yǔ)系 5 化學(xué)系 2 計(jì)算機(jī)系 1,(5)對(duì)查詢結(jié)果分組,例2-28 查詢系學(xué)生人數(shù)在3人以上的系。 SELECT Sdept as 系名 FROM Student GROUP BY S

26、dept HAVING COUNT(*) 3 ;,2連接查詢,例2-29 查詢每個(gè)學(xué)生和各門課程的成績(jī)。 SELECT Student.Sno,Sname,Ssex,birthdauy,Sdept,Cno,Score FROM Student,SC WHERE Student.Sno = SC.Sno;,2連接查詢,如果某個(gè)學(xué)生沒有課程成績(jī),只輸出基本情況信息其成績(jī)信息為空值,這時(shí)就需要將上述查詢語(yǔ)句改為: SELECT Student.Sno,Sname,Ssex,birthday,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno = SC.

27、Sno(*);,2連接查詢,例2-30 查詢課程290010成績(jī)不及格的所有學(xué)生的學(xué)號(hào)、姓名。 SELECT Student.Sno, student.Sname FROM Student, SC WHERE Student.Sno = SC.Sno AND SC.Cno= 290010 AND SC.Grade 60; 例2-31 查詢每個(gè)學(xué)生的學(xué)號(hào)、姓名、選修的課程名及成績(jī)。 SELECT Student.Sno,Sname,Cname,Score FROM Student,SC,Course WHERE Student.Sno = SC.Sno and SC.Cno = Course.C

28、no;,224 數(shù)據(jù)更改功能,數(shù)據(jù)更改功能包括插入數(shù)據(jù)、修改數(shù)據(jù)和刪除數(shù)據(jù)。 1. 插入數(shù)據(jù) 插入數(shù)據(jù)的功能是將新元組插入到指定的表中。 格式:INSERT INTO (,) VALUES ( , ) 注意: (1)屬性列的順序可與表定義中的順序不一致; (2)沒有指定屬性列:表示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序一致,值的個(gè)數(shù)一致,值的數(shù)據(jù)類型一致; (3)插入的元組在沒有指定的屬性列上取空值。,1. 插入數(shù)據(jù),例2-32 將一個(gè)新學(xué)生記錄插入到Student表中。該學(xué)生的學(xué)號(hào)是20040109;姓名:劉剛;性別:男;所在系:計(jì)算機(jī)系;出身年月:1985年10月。 INS

29、ERT INTO Student VALUES (20040109,劉剛,男,2004.10,計(jì)算機(jī)系); 例2-33 在SC表插入一條學(xué)生課程記錄:學(xué)號(hào)為 20040109的學(xué)生選修的課程號(hào)為300010 ,成績(jī)?yōu)榭铡?INSERT INTO SC(Sno,Cno) VALUES ( 20040109 , 300010 );,2修改數(shù)據(jù),修改數(shù)據(jù)是修改指定表中滿足WHERE子句條件的元組。 格式: UPDATE SET =,=WHERE ; 其中:SET子句要修改的列和修改后取值。 WHERE子句指定要修改的元組,缺省表示要修改表中的所有元組。 DBMS在執(zhí)行修改語(yǔ)句時(shí)會(huì)檢查修改操作是否破壞

30、表上已定義的完整性規(guī)則,主要是實(shí)體完整性和用戶定義的完整性,例如,是否滿足NOT NULL約束, UNIQUE約束,值域約束,主碼不允許修改。,2修改數(shù)據(jù),例2-34 將學(xué)生20040109的名字改為劉鋼。 UPDATE Student SET Sname=劉鋼 WHERE Sno= 20040109 ; 例2-35 將所有計(jì)算機(jī)系學(xué)生的系別改為“計(jì)算機(jī)科學(xué)系”。 UPDATE Student SET Sdept= 計(jì)算機(jī)系 WHERE Sdept= 計(jì)算機(jī)科學(xué)系 ;,3刪除數(shù)據(jù),刪除數(shù)據(jù)是刪除指定表中滿足WHERE子句條件的元組。 格式:DELETE FROM WHERE ; 其中:WHER

31、E子句指定要?jiǎng)h除的元組,缺省表示要修改表中的所有元組。 例2-36 刪除學(xué)號(hào)為20040109的學(xué)生記錄。 DELETE FROM Student WHERE Sno=20040109;,3刪除數(shù)據(jù),例2-37 刪除課程號(hào)為290010的所有選課記錄。 DELETE FROM SC; WHERE Cno=290010; 例2-38 刪除所有的學(xué)生選課記錄。 DELETE FROM SC;,24 數(shù)據(jù)庫(kù)設(shè)計(jì),數(shù)據(jù)庫(kù)是信息系統(tǒng)的核心和基礎(chǔ),數(shù)據(jù)庫(kù)設(shè)計(jì)是指利用現(xiàn)有的數(shù)據(jù)庫(kù)管理系統(tǒng)為具體的應(yīng)用對(duì)象構(gòu)造適合的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠存儲(chǔ)數(shù)據(jù),滿足各種用戶的應(yīng)用需求。數(shù)據(jù)庫(kù)設(shè)計(jì)是建立數(shù)

32、據(jù)庫(kù)及其應(yīng)用系統(tǒng)的技術(shù),是信息系統(tǒng)開發(fā)和建設(shè)中的核心技術(shù)。,241 數(shù)據(jù)庫(kù)設(shè)計(jì)概述,數(shù)據(jù)庫(kù)是信息系統(tǒng)的核心和基礎(chǔ),數(shù)據(jù)庫(kù)設(shè)計(jì)是指利用現(xiàn)有的數(shù)據(jù)庫(kù)管理系統(tǒng)為具體的應(yīng)用對(duì)象構(gòu)造適合的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠存儲(chǔ)數(shù)據(jù),滿足各種用戶的應(yīng)用需求。數(shù)據(jù)庫(kù)設(shè)計(jì)是建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)的技術(shù),是信息系統(tǒng)開發(fā)和建設(shè)中的核心技術(shù)。,241 數(shù)據(jù)庫(kù)設(shè)計(jì)概述,1數(shù)據(jù)庫(kù)設(shè)計(jì)特點(diǎn) 由于數(shù)據(jù)庫(kù)設(shè)計(jì)和用戶的業(yè)務(wù)需求緊密相關(guān),因而它是一項(xiàng)涉及多學(xué)科的綜合性技術(shù),同時(shí)又是一項(xiàng)龐大的工程項(xiàng)目。它主要有如下的特點(diǎn): (1)數(shù)據(jù)庫(kù)建設(shè)是硬件、軟件和干件(技術(shù)與管理的界面)的結(jié)合。 (2)數(shù)據(jù)庫(kù)設(shè)計(jì)應(yīng)該與應(yīng)用系統(tǒng)設(shè)計(jì)

33、相結(jié)合,整個(gè)設(shè)計(jì)過程中要把結(jié)構(gòu)設(shè)計(jì)和行為設(shè)計(jì)密切結(jié)合起來。,結(jié)構(gòu)和行為分離的設(shè)計(jì),2 數(shù)據(jù)庫(kù)設(shè)計(jì)方法概述,由于信息結(jié)構(gòu)復(fù)雜性,應(yīng)用環(huán)境多樣,在早期采用手工試湊法,這種方法的設(shè)計(jì)質(zhì)量與設(shè)計(jì)人員的經(jīng)驗(yàn)和水平有直接關(guān)系,并缺乏科學(xué)理論和工程方法的支持,工程的質(zhì)量難以保證,往往數(shù)據(jù)庫(kù)運(yùn)行一段時(shí)間后常常又不同程度地發(fā)現(xiàn)各種問題,增加了維護(hù)代價(jià)。運(yùn)用軟件工程的思想和方法,提出了各種設(shè)計(jì)方法,這些都是規(guī)范設(shè)計(jì)法。其基本思想都是過程迭代和逐步求精。其中,典型方法有新奧爾良(New Orleans)方法,它將數(shù)據(jù)庫(kù)設(shè)計(jì)分為需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì),另外還有S.B.Yao方法和I.R.Palmer方

34、法等。,3數(shù)據(jù)庫(kù)設(shè)計(jì)的基本步驟,按照規(guī)范設(shè)計(jì)的方法,數(shù)據(jù)庫(kù)設(shè)計(jì)的過程分為六個(gè)階段: (1)需求分析階段 ; (2)概念結(jié)構(gòu)設(shè)計(jì)階段 ; (3)邏輯結(jié)構(gòu)設(shè)計(jì)階段 ; (4)數(shù)據(jù)庫(kù)物理設(shè)計(jì)階段 ; (5)數(shù)據(jù)庫(kù)實(shí)施階段 ; (6)數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段 .,242 數(shù)據(jù)庫(kù)需求分析,1需求分析的任務(wù) 需求分析的重點(diǎn)是調(diào)查、收集與分析用戶在數(shù)據(jù)管理中的信息要求、處理要求、安全性與完整性要求。 2. 需求分析的方法 (1)調(diào)查與初步分析用戶需求 (2)常用調(diào)查方法 做需求調(diào)查時(shí),往往需要同時(shí)采用多種方法,如跟班作業(yè). (3)分析和表達(dá)用戶需求 分析和表達(dá)用戶的需求的常用方法有自頂向下的結(jié)構(gòu)化分析方法(St

35、ructured Analysis,簡(jiǎn)稱SA方法) 例如:假設(shè)我們要開發(fā)一個(gè)學(xué)校管理系統(tǒng)。 3數(shù)據(jù)字典 數(shù)據(jù)字典是系統(tǒng)中各類數(shù)據(jù)描述的集合,數(shù)據(jù)字典通常包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)和處理過程五個(gè)部分。,243 概念設(shè)計(jì),需求分析完成后進(jìn)行概念設(shè)計(jì),它是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵。 1概念結(jié)構(gòu) 概念結(jié)構(gòu)設(shè)計(jì)的特點(diǎn)是: (1)能真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,能滿足用戶對(duì)數(shù)據(jù)的處理要求。是對(duì)現(xiàn)實(shí)世界的一個(gè)真實(shí)模型。 (2)易于理解,從而可以用它和不熟悉計(jì)算機(jī)的用戶交換意見,用戶的積極參與是數(shù)據(jù)庫(kù)的設(shè)計(jì)成功的關(guān)鍵。 (3)易于更改,當(dāng)應(yīng)用環(huán)境和應(yīng)用要求改變時(shí),容易對(duì)概念模型修

36、改和擴(kuò)充。 (4)易于向關(guān)系、網(wǎng)狀、層次等各種數(shù)據(jù)模型轉(zhuǎn)換。 描述概念模型的工具是E-R模型。,2概念結(jié)構(gòu)設(shè)計(jì)的方法,(1)自頂向下:首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化。 (2)自底向上:首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來,得到全局概念結(jié)構(gòu)。 (3)逐步擴(kuò)張:首先定義最重要的核心概念結(jié)構(gòu),然后向外擴(kuò)充,以滾雪球的方式逐步生成其他概念結(jié)構(gòu),直至總體概念結(jié)構(gòu)。 (4)混合策略:將自頂向下和自底向上相結(jié)合,用自頂向下策略設(shè)計(jì)一個(gè)全局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu)。,3用E-R模型方法設(shè)計(jì)概念結(jié)構(gòu),目前設(shè)計(jì)數(shù)據(jù)庫(kù)概念模型最常用的方法是E-R方法,

37、采用該方法一般分為三步: 第1步:抽象數(shù)據(jù)并設(shè)計(jì)局部視圖。 第2步:集成局部視圖,得到全局概念結(jié)構(gòu)。 第3步:優(yōu)化全局E-R模型。,(1)數(shù)據(jù)抽象與局部視圖設(shè)計(jì),數(shù)據(jù)抽象 概念結(jié)構(gòu)是對(duì)現(xiàn)實(shí)世界的一種抽象,從實(shí)際的人、物、事和概念中抽取所關(guān)心的共同特性,忽略非本質(zhì)的細(xì)節(jié),把這些特性用各種概念精確地加以描述,這些概念組成了某種模型。 三種常用抽象: 分類(Classification) 聚集(Aggregation) 概括(Generalization),分類(Classification),分類定義某一類概念作為現(xiàn)實(shí)世界中一組對(duì)象的類型,這些對(duì)象具有某些共同的特性和行為,它抽象了對(duì)象值和型之間的

38、“is a member of”的語(yǔ)義,在E-R模型中,實(shí)體型就是這種抽象。 例:如圖2-15所示,張小剛是學(xué)生實(shí)體中的一員,也就是一個(gè)實(shí)例,這些學(xué)生具有系統(tǒng)的特性和行為。,聚集(Aggregation),聚集定義某一類型的組成成分,它抽象了對(duì)象內(nèi)部類型和成分之間“is part of”的語(yǔ)義,在E-R模型中若干屬性的聚集組成了實(shí)體型,就是這種抽象 .,概括(Generalization,概括定義類型之間的一種子集聯(lián)系,它抽象了類型之間的“is subset of”的語(yǔ)義,概括有一個(gè)很重要的性質(zhì):繼承性。子類繼承超類上定義的所有抽象 .,(1)數(shù)據(jù)抽象與局部視圖設(shè)計(jì),局部視圖設(shè)計(jì) 設(shè)計(jì)分E-R

39、圖首先需要根據(jù)系統(tǒng)的具體情況,在多層的數(shù)據(jù)流圖中選擇一個(gè)適當(dāng)層次的數(shù)據(jù)流圖,讓這組圖中每一部分對(duì)應(yīng)一個(gè)局部應(yīng)用,然后以這一層次的數(shù)據(jù)流圖為出發(fā)點(diǎn),設(shè)計(jì)分E-R圖。 設(shè)計(jì)分E-R圖的步驟為: 以數(shù)據(jù)字典為出發(fā)點(diǎn)定義E-R圖。數(shù)據(jù)字典中的“數(shù)據(jù)結(jié)構(gòu)”、“數(shù)據(jù)流”和“數(shù)據(jù)存儲(chǔ)”等已是若干屬性的有意義的聚合 按上面給出的準(zhǔn)則進(jìn)行必要的調(diào)整。 例:學(xué)籍管理局部應(yīng)用中主要涉及的實(shí)體包括學(xué)生、宿舍、檔案材料、班級(jí)、班主任。,(2)集成局部視圖,得到全局概念結(jié)構(gòu),合并分E-R圖的主要工作與關(guān)鍵所在是合理消除各分E-R圖的沖突。沖突有如下幾種: 屬性沖突: (1)屬性域沖突,即屬性的屬性值的類型、取值范圍或取值

40、集合不同。例如, 學(xué)號(hào)是可能是數(shù)字,也可能是字符型形式。 (2)屬性取值單位沖突。 例如,學(xué)生的身高,有的以米為單位,有的以厘米為單位。 命名沖突: (1)同名異義. (2)異名同義(一義多名)。 語(yǔ)結(jié)構(gòu)沖突:(1)同一對(duì)象在不同應(yīng)用中具有不同的抽象。例如,“課程”在某一局部應(yīng)用中被當(dāng)作實(shí)體,而在另一局部應(yīng)用中則被當(dāng)作屬性。 (2)同一實(shí)體在不同局部視圖中所包含的屬性不完全相同,或者屬性的排列次序不完全相同。,(3)驗(yàn)證整體概念結(jié)構(gòu),視圖集成后形成一個(gè)整體的數(shù)據(jù)庫(kù)概念結(jié)構(gòu),對(duì)該整體概念結(jié)構(gòu)還必須進(jìn)行進(jìn)一步驗(yàn)證,確保它能夠滿足下列條件: 整體概念結(jié)構(gòu)內(nèi)部必須具有一致性,不存在互相矛盾的表達(dá)。 整

41、體概念結(jié)構(gòu)能準(zhǔn)確地反映原來的每個(gè)視圖結(jié)構(gòu),包括屬性、實(shí)體及實(shí)體間的聯(lián)系。 整體概念結(jié)構(gòu)能滿足需要分析階段所確定的所有要求。 整體概念結(jié)構(gòu)最終還應(yīng)該提交給用戶,征求用戶和有關(guān)人員的意見,進(jìn)行評(píng)審、修改和優(yōu)化,然后把它確定下來,作為數(shù)據(jù)庫(kù)的概念結(jié)構(gòu),作為進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫(kù)的依據(jù)。,244 實(shí)現(xiàn)設(shè)計(jì),1定義數(shù)據(jù)庫(kù)結(jié)構(gòu) 確定了數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)后,就可以用所選用的DBMS提供的數(shù)據(jù)定義語(yǔ)言(DDL)來嚴(yán)格描述數(shù)據(jù)庫(kù)結(jié)構(gòu)。 例,對(duì)于前面的例子,可以用SQL語(yǔ)句如下定義表結(jié)構(gòu): CREATE TABLE 學(xué)生 (Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20),S

42、sex CHAR(1),Sdept CHAR(15) CREATE TABLE 課程 (Cno CHAR(4) , Cname CHAR(20) NOT NULL, Ccredit int, CHECK(Ccredit0) Period int CHECK(Period0) Primary key ( Cno),2數(shù)據(jù)裝載,數(shù)據(jù)裝載方法有:人工方法和計(jì)算機(jī)輔助數(shù)據(jù)入庫(kù)。,人工方法適用于小型系統(tǒng), 其步驟如下: (1) 篩選數(shù)據(jù)。 (2) 轉(zhuǎn)換數(shù)據(jù)格式。 (3) 輸入數(shù)據(jù)。 (4) 校驗(yàn)數(shù)據(jù)。,計(jì)算機(jī)輔助數(shù)據(jù)入庫(kù):適用于中大型系統(tǒng),其步驟如下: (1) 篩選數(shù)據(jù) (2) 輸入數(shù)據(jù)。 (3) 校驗(yàn)

43、數(shù)據(jù)。 (4) 轉(zhuǎn)換數(shù)據(jù)。 (5) 綜合數(shù)據(jù)。,3編制與調(diào)試應(yīng)用程序,數(shù)據(jù)庫(kù)應(yīng)用程序的設(shè)計(jì)應(yīng)該與數(shù)據(jù)設(shè)計(jì)并行進(jìn)行。 在數(shù)據(jù)庫(kù)實(shí)施階段,當(dāng)數(shù)據(jù)庫(kù)結(jié)構(gòu)建立好后,就可以開始編制與調(diào)試數(shù)據(jù)庫(kù)的應(yīng)用程序。調(diào)試應(yīng)用程序時(shí)由于數(shù)據(jù)入庫(kù)尚未完成,可先使用模擬數(shù)據(jù)。,4數(shù)據(jù)庫(kù)試運(yùn)行,數(shù)據(jù)庫(kù)試運(yùn)行也稱為聯(lián)合調(diào)試,其主要工作包括: (1)功能測(cè)試。 (2)性能測(cè)試 。 在數(shù)據(jù)庫(kù)試運(yùn)行階段,系統(tǒng)還不穩(wěn)定,硬、軟件故障隨時(shí)都可能發(fā)生,系統(tǒng)的操作人員對(duì)新系統(tǒng)還不熟悉,誤操作也不可避免,因此必須做好數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)和恢復(fù)工作,盡量減少對(duì)數(shù)據(jù)庫(kù)的破壞。,245數(shù)據(jù)庫(kù)的實(shí)施和維護(hù), 數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)和恢復(fù) 數(shù)據(jù)庫(kù)的安全性、完整性控制

44、數(shù)據(jù)庫(kù)性能的監(jiān)督、分析和改進(jìn) 數(shù)據(jù)庫(kù)的重組織和重構(gòu)造 (1)數(shù)據(jù)庫(kù)的重組織 (2)數(shù)據(jù)庫(kù)的重構(gòu)造,25 數(shù)據(jù)庫(kù)保護(hù),251 事務(wù)的基本概念 1什么是事務(wù) 事務(wù)(Transaction)是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,是一個(gè)不可分割的工作單位。一旦事務(wù)開始運(yùn)行,必須做完事務(wù)中的所有操作。 例如,在關(guān)系數(shù)據(jù)庫(kù)中,一個(gè)事務(wù)可以是一條SQL語(yǔ)句,一組SQL語(yǔ)句或整個(gè)程序,一個(gè)應(yīng)用程序通常包含多個(gè)事務(wù)。 事務(wù)和程序是兩個(gè)概念。程序是靜止的,事務(wù)是動(dòng)態(tài)的,是程序的某一次執(zhí)行。事務(wù)是恢復(fù)和并發(fā)控制的基本單位。,事務(wù)的定義方式,(1)顯示定義方式 BEGIN TRANSATION BEGIN TRANSACTION SQL語(yǔ)句1 SQL語(yǔ)句1 SQL語(yǔ)句2 SQL語(yǔ)句2 COMMIT ROLLBACK (2)隱式方式 當(dāng)用戶沒有顯式地定義事務(wù)時(shí),DBMS按缺省規(guī)定自動(dòng)劃分事務(wù),2事務(wù)的特性(ACID特性),(1)原子性(Atomicity) (2)一致性(Consistency) (3) 隔離性(Isolation) (4) 持續(xù)性(Durability ) 保證事務(wù)ACID特性是事務(wù)處理的重要任務(wù)。破壞事務(wù)ACID特性的因素有: (1)多個(gè)事務(wù)并行運(yùn)行時(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論