數(shù)據(jù)庫(kù)第4章2_第1頁(yè)
數(shù)據(jù)庫(kù)第4章2_第2頁(yè)
數(shù)據(jù)庫(kù)第4章2_第3頁(yè)
數(shù)據(jù)庫(kù)第4章2_第4頁(yè)
數(shù)據(jù)庫(kù)第4章2_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-1數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.5 數(shù) 據(jù) 更 新 4.5.1 插入數(shù)據(jù)4.5.2 修改數(shù)據(jù)4.5.3 刪除數(shù)據(jù) 鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-2數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.5.1 插入數(shù)據(jù)插入數(shù)據(jù)兩種插入數(shù)據(jù)方式兩種插入數(shù)據(jù)方式v 插入單個(gè)元組插入單個(gè)元組v 插入子查詢結(jié)果插入子查詢結(jié)果鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-3數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理1. 插入單個(gè)元組插入單個(gè)元組語(yǔ)句格式語(yǔ)句格式INSERTINTO (,)VALUES ( , )功能功能 將新元組插入指定表中。將新元

2、組插入指定表中。鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-4數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理插入單個(gè)元組(續(xù))插入單個(gè)元組(續(xù))例例1 將一個(gè)新學(xué)生記錄將一個(gè)新學(xué)生記錄(學(xué)號(hào):(學(xué)號(hào):95020;姓名:陳冬;性別:男;所在系:;姓名:陳冬;性別:男;所在系:IS;年齡:;年齡:18歲)插入到歲)插入到Student表中。表中。 INSERT INTO Student VALUES (95020,陳冬陳冬,男男,IS,18);鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-5數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理插入單個(gè)元組(續(xù))插入單個(gè)元組(續(xù))例例2 插入一條選課記錄插入一條選課記錄

3、( 95020,1 )。 INSERT INTO SC(Sno,Cno) VALUES ( 95020 , 1 ); 新插入的記錄在新插入的記錄在Grade列上取空值列上取空值鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-6數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理插入單個(gè)元組(續(xù))插入單個(gè)元組(續(xù)) INTO子句子句v指定要插入數(shù)據(jù)的表名及屬性列指定要插入數(shù)據(jù)的表名及屬性列v屬性列的順序可與表定義中的順序不一致屬性列的順序可與表定義中的順序不一致v沒(méi)有指定屬性列:表示要插入的是一條完整的元組,且沒(méi)有指定屬性列:表示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序一致屬性列屬性與表定義中的順

4、序一致v指定部分屬性列:插入的元組在其余屬性列上取空值指定部分屬性列:插入的元組在其余屬性列上取空值 VALUES子句子句v 提供的值必須與提供的值必須與INTO子句匹配子句匹配值的個(gè)數(shù)值的個(gè)數(shù)值的類型值的類型鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-7數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理2. 插入子查詢結(jié)果插入子查詢結(jié)果語(yǔ)句格式語(yǔ)句格式 INSERT INTO ( , ) 子查詢;子查詢;功能功能 將子查詢結(jié)果插入指定表中將子查詢結(jié)果插入指定表中鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-8數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))例例3 對(duì)每一個(gè)

5、系,求學(xué)生的平均年齡,并把結(jié)果存對(duì)每一個(gè)系,求學(xué)生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫(kù)。入數(shù)據(jù)庫(kù)。第一步:建表第一步:建表 CREATE TABLE Deptage (Sdept CHAR(15) /* 系名系名*/ Avgage SMALLINT); /*學(xué)生平均年齡學(xué)生平均年齡*/ 鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-9數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))第二步:插入數(shù)據(jù)第二步:插入數(shù)據(jù) INSERT INTO Deptage(Sdept,Avgage) SELECT Sdept,AVG(Sage) FROM Student GROUP BY

6、Sdept;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-10數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))vINTO子句子句(與插入單條元組類似與插入單條元組類似)v指定要插入數(shù)據(jù)的表名及屬性列指定要插入數(shù)據(jù)的表名及屬性列v屬性列的順序可與表定義中的順序不一致屬性列的順序可與表定義中的順序不一致v沒(méi)有指定屬性列:表示要插入的是一條完整的元沒(méi)有指定屬性列:表示要插入的是一條完整的元組組v指定部分屬性列:插入的元組在其余屬性列上取指定部分屬性列:插入的元組在其余屬性列上取空值空值v 子查詢子查詢vSELECT子句目標(biāo)列必須與子句目標(biāo)列必須與INTO子句匹配子句匹配

7、v值的個(gè)數(shù)值的個(gè)數(shù)v值的類型值的類型鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-11數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))DBMS在執(zhí)行插入語(yǔ)句時(shí)會(huì)檢查所插元組是在執(zhí)行插入語(yǔ)句時(shí)會(huì)檢查所插元組是否破壞表上已定義的完整性規(guī)則否破壞表上已定義的完整性規(guī)則v實(shí)體完整性實(shí)體完整性v參照完整性參照完整性v用戶定義的完整性用戶定義的完整性v對(duì)于有對(duì)于有NOT NULL約束的屬性列是否提供了非空值約束的屬性列是否提供了非空值v 對(duì)于有對(duì)于有UNIQUE約束的屬性列是否提供了非重復(fù)值約束的屬性列是否提供了非重復(fù)值v 對(duì)于有值域約束的屬性列所提供的屬性值是否在值域范對(duì)于

8、有值域約束的屬性列所提供的屬性值是否在值域范圍內(nèi)圍內(nèi)鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-12數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.5 數(shù)數(shù) 據(jù)據(jù) 更更 新新 4.5.1 插入數(shù)據(jù)插入數(shù)據(jù)4.5.2 修改數(shù)據(jù)修改數(shù)據(jù)4.5.3 刪除數(shù)據(jù)刪除數(shù)據(jù) 鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-13數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.5.2 修改數(shù)據(jù)修改數(shù)據(jù)語(yǔ)句格式語(yǔ)句格式 UPDATE SET =,= WHERE ;功能功能修改指定表中滿足修改指定表中滿足WHERE子句條件的元組子句條件的元組鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-14數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原

9、理修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)(續(xù))三種修改方式三種修改方式v修改某一個(gè)元組的值修改某一個(gè)元組的值v修改多個(gè)元組的值修改多個(gè)元組的值v帶子查詢的修改語(yǔ)句帶子查詢的修改語(yǔ)句鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-15數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理1. 修改某一個(gè)元組的值修改某一個(gè)元組的值例例4 將學(xué)生將學(xué)生95001的年齡改為的年齡改為22歲。歲。 UPDATE Student SET Sage=22 WHERE Sno= 95001 ; 鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-16數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理2. 修改多個(gè)元組的值修改多個(gè)元組的值例例5 將所有學(xué)生的年齡

10、增加將所有學(xué)生的年齡增加1歲。歲。 UPDATE Student SET Sage= Sage+1;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-17數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理修改多個(gè)元組的值修改多個(gè)元組的值(續(xù)續(xù))例例6 將信息系所有學(xué)生的年齡增加將信息系所有學(xué)生的年齡增加1歲。歲。 UPDATE Student SET Sage= Sage+1 WHERE Sdept= IS ;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-18數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理3. 帶子查詢的修改語(yǔ)句帶子查詢的修改語(yǔ)句例例7 將計(jì)算機(jī)科學(xué)系全體學(xué)生的成績(jī)置零。將計(jì)算機(jī)科學(xué)系全體學(xué)生的成績(jī)置

11、零。 UPDATE SC SET Grade=0 WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno);鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-19數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)(續(xù))vSET子句子句 指定修改方式指定修改方式 要修改的列要修改的列 修改后取值修改后取值vWHERE子句子句指定要修改的元組指定要修改的元組缺省表示要修改表中的所有元組缺省表示要修改表中的所有元組鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-20數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)

12、(續(xù))DBMS在執(zhí)行修改語(yǔ)句時(shí)會(huì)檢查修改操作在執(zhí)行修改語(yǔ)句時(shí)會(huì)檢查修改操作是否破壞表上已定義的完整性規(guī)則是否破壞表上已定義的完整性規(guī)則v實(shí)體完整性實(shí)體完整性v主碼不允許修改主碼不允許修改v用戶定義的完整性用戶定義的完整性v NOT NULL約束約束v UNIQUE約束約束v 值域約束值域約束鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-21數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.5 數(shù)數(shù) 據(jù)據(jù) 更更 新新 4.5.1 插入數(shù)據(jù)插入數(shù)據(jù)4.5.2 修改數(shù)據(jù)修改數(shù)據(jù)4.5.3 刪除數(shù)據(jù)刪除數(shù)據(jù) 鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-22數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.5.3 刪

13、除數(shù)據(jù)刪除數(shù)據(jù) DELETE FROM WHERE ;功能功能w刪除指定表中滿足刪除指定表中滿足WHERE子句條件的子句條件的元組元組WHERE子句子句w指定要?jiǎng)h除的元組指定要?jiǎng)h除的元組w缺省表示要修改表中的所有元組缺省表示要修改表中的所有元組鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-23數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理刪除數(shù)據(jù)(續(xù))刪除數(shù)據(jù)(續(xù))三種刪除方式三種刪除方式v刪除某一個(gè)元組的值刪除某一個(gè)元組的值v刪除多個(gè)元組的值刪除多個(gè)元組的值v帶子查詢的刪除語(yǔ)句帶子查詢的刪除語(yǔ)句鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-24數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理1. 刪除某一個(gè)元

14、組的值刪除某一個(gè)元組的值例8 刪除學(xué)號(hào)為95019的學(xué)生記錄。 DELETE FROM Student WHERE Sno=95019;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-25數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理2. 刪除多個(gè)元組的值刪除多個(gè)元組的值例9 刪除2號(hào)課程的所有選課記錄。 DELETE FROM SC; WHERE Cno=2;例10 刪除所有的學(xué)生選課記錄。 DELETE FROM SC;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-26數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理3. 帶子查詢的刪除語(yǔ)句帶子查詢的刪除語(yǔ)句例11 刪除計(jì)算機(jī)科學(xué)系所有學(xué)生的選課記錄。 DEL

15、ETE FROM SC WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-27數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理刪除數(shù)據(jù)刪除數(shù)據(jù)(續(xù)續(xù))DBMS在執(zhí)行插入語(yǔ)句時(shí)會(huì)檢查所插元組是否破壞表上已定義的完整性規(guī)則參照完整性不允許刪除級(jí)聯(lián)刪除鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-28數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理更新數(shù)據(jù)與數(shù)據(jù)一致性更新數(shù)據(jù)與數(shù)據(jù)一致性DBMS在執(zhí)行插入、刪除、更新語(yǔ)句時(shí)必須保證數(shù)據(jù)庫(kù)一致性必須有事務(wù)的概念和原子性完整性檢查和保證鄭州輕工業(yè)學(xué)院軟件

16、職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-29數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.6 視視 圖圖視圖的特點(diǎn)虛表,是從一個(gè)或幾個(gè)基本表(或視圖)導(dǎo)出的表只存放視圖的定義,不會(huì)出現(xiàn)數(shù)據(jù)冗余基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-30數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.6 視視 圖圖基于視圖的操作 查詢 刪除 受限更新定義基于該視圖的新視圖鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-31數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.6 視視 圖圖3.5.1 定義視圖定義視圖3.5.2 查詢視圖查詢視圖3.5.3 更新視圖更新視圖3.5.4 視圖的

17、作用視圖的作用鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-32數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理1. 建立視圖語(yǔ)句格式 CREATE VIEW ( ,) AS WITH CHECK OPTION;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-33數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理 建立視圖(續(xù))建立視圖(續(xù))DBMS執(zhí)行CREATE VIEW語(yǔ)句時(shí)只是把視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT語(yǔ)句。在對(duì)視圖查詢時(shí),按視圖的定義從基本表中將數(shù)據(jù)查出。鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-34數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理組成視圖的屬性列名組成視圖的屬性列名全部

18、省略或全部指定 省略: 由子查詢中SELECT目標(biāo)列中的諸字段組成 明確指定視圖的所有列名:(1) 某個(gè)目標(biāo)列是集函數(shù)或列表達(dá)式(2) 目標(biāo)列為 *(3) 多表連接時(shí)選出了幾個(gè)同名列作為視圖的字段(4) 需要在視圖中為某個(gè)列啟用新的更合適的名字鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-35數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理行列子集視圖行列子集視圖 例1 建立信息系學(xué)生的視圖。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;從單個(gè)基本表導(dǎo)出只是去掉了基本表的某些行和某些列保留了碼鄭

19、州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-36數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理 建立視圖(續(xù))建立視圖(續(xù))WITH CHECK OPTION透過(guò)視圖進(jìn)行增刪改操作時(shí),不得破壞視圖定義中的謂詞條件(即子查詢中的條件表達(dá)式)鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-37數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理 WITH CHECK OPTION的視圖的視圖例2 建立信息系學(xué)生的視圖,并要求透過(guò)該視圖進(jìn)行的更新操作只涉及信息系學(xué)生。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS W

20、ITH CHECK OPTION;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-38數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理對(duì)對(duì)IS_Student視圖的更新操作視圖的更新操作修改操作:修改操作:DBMS自動(dòng)加上自動(dòng)加上Sdept= IS的條件的條件刪除操作:刪除操作:DBMS自動(dòng)加上自動(dòng)加上Sdept= IS的條件的條件插入操作:插入操作:DBMS自動(dòng)檢查自動(dòng)檢查Sdept屬性值是否為屬性值是否為IS 如果不是,則拒絕該插入操作如果不是,則拒絕該插入操作 如果沒(méi)有提供如果沒(méi)有提供Sdept屬性值,則自動(dòng)定義屬性值,則自動(dòng)定義Sdept為為IS鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)

21、技術(shù)學(xué)院1-39數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理基于多個(gè)基表的視圖基于多個(gè)基表的視圖例例4 建立信息系選修了建立信息系選修了1號(hào)課程的學(xué)生視圖。號(hào)課程的學(xué)生視圖。 CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept= IS AND Student.Sno=SC.Sno AND SC.Cno= 1;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-40數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理基于視圖的視圖基于視圖的視圖例例5 建立信息系選修了建立信息系選修了1號(hào)課程且成績(jī)?cè)?/p>

22、號(hào)課程且成績(jī)?cè)?0分以上的學(xué)分以上的學(xué)生的視圖。生的視圖。 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade=90;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-41數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理帶表達(dá)式的視圖帶表達(dá)式的視圖例例6 定義一個(gè)反映學(xué)生出生年份的視圖。定義一個(gè)反映學(xué)生出生年份的視圖。 CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2000-Sage FROM Student設(shè)置一些派生屬性列設(shè)置一些派生屬性列, 也也稱為虛擬列稱

23、為虛擬列-Sbirth 帶表達(dá)式的視圖必須明確定義組成視圖的各個(gè)屬帶表達(dá)式的視圖必須明確定義組成視圖的各個(gè)屬性列名性列名鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-42數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理 建立分組視圖建立分組視圖例例7 將學(xué)生的學(xué)號(hào)及他的平均成績(jī)定義為一個(gè)視圖將學(xué)生的學(xué)號(hào)及他的平均成績(jī)定義為一個(gè)視圖 假設(shè)假設(shè)SC表中表中“成績(jī)成績(jī)”列列Grade為數(shù)字型為數(shù)字型 CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-43數(shù)

24、據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理 建立視圖(續(xù))建立視圖(續(xù))一類不易擴(kuò)充的視圖一類不易擴(kuò)充的視圖 以以 SELECT * 方式創(chuàng)建的視圖可擴(kuò)充性差,應(yīng)盡可能避方式創(chuàng)建的視圖可擴(kuò)充性差,應(yīng)盡可能避免免鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-44數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理 建立視圖(續(xù))建立視圖(續(xù))例例8將將Student表中所有女生記錄定義為一個(gè)視圖表中所有女生記錄定義為一個(gè)視圖 CREATE VIEW F_Student1(stdnum,name,sex,age,dept) AS SELECT * FROM Student WHERE Ssex=女女;缺點(diǎn):修改基表缺點(diǎn):修改基表Stu

25、dent的結(jié)構(gòu)后,的結(jié)構(gòu)后,Student表表與與F_Student1視圖的映象關(guān)系被破壞,視圖的映象關(guān)系被破壞,導(dǎo)致該視圖不能正確工作。導(dǎo)致該視圖不能正確工作。鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-45數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理 建立視圖(續(xù))建立視圖(續(xù)) CREATE VIEW F_Student2 (stdnum,name,sex,age,dept) AS SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student WHERE Ssex=女女;為基表為基表Student增加屬性列不會(huì)破壞增加屬性列不會(huì)破壞Student表表與與F_St

26、udent2視圖的映象關(guān)系。視圖的映象關(guān)系。鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-46數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理常見(jiàn)的視圖形式常見(jiàn)的視圖形式 行列子集視圖行列子集視圖 WITH CHECK OPTION的視圖的視圖 基于多個(gè)基表的視圖基于多個(gè)基表的視圖 基于視圖的視圖基于視圖的視圖 帶表達(dá)式的視圖帶表達(dá)式的視圖 分組視圖分組視圖鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-47數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理2. 刪除視圖刪除視圖DROP VIEW ; 該語(yǔ)句從數(shù)據(jù)字典中刪除指定的視圖定義該語(yǔ)句從數(shù)據(jù)字典中刪除指定的視圖定義 由該視圖導(dǎo)出的其他視圖定義仍在數(shù)據(jù)字典中,

27、但已不由該視圖導(dǎo)出的其他視圖定義仍在數(shù)據(jù)字典中,但已不能使用,必須顯式刪除能使用,必須顯式刪除 刪除基表時(shí),由該基表導(dǎo)出的所有視圖定義都必須顯式刪除基表時(shí),由該基表導(dǎo)出的所有視圖定義都必須顯式刪除刪除鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-48數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理刪除視圖刪除視圖(續(xù))續(xù)) 例例9 刪除視圖刪除視圖IS_S1 DROP VIEW IS_S1; 鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-49數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.6 視視 圖圖4.6.1 定義視圖定義視圖4.6.2 查詢視圖查詢視圖4.6.3 更新視圖更新視圖4.6.4 視圖的作用視

28、圖的作用鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-50數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.6.2 查詢視圖查詢視圖從用戶角度:查詢視圖與查詢基本表相同從用戶角度:查詢視圖與查詢基本表相同DBMS實(shí)現(xiàn)實(shí)現(xiàn)視圖查詢的方法視圖查詢的方法 實(shí)體化視圖(實(shí)體化視圖(View Materialization) 有效性檢查:檢查所查詢的視圖是否存在有效性檢查:檢查所查詢的視圖是否存在 執(zhí)行視圖定義,將視圖臨時(shí)實(shí)體化,生成臨時(shí)表執(zhí)行視圖定義,將視圖臨時(shí)實(shí)體化,生成臨時(shí)表 查詢視圖轉(zhuǎn)換為查詢臨時(shí)表查詢視圖轉(zhuǎn)換為查詢臨時(shí)表 查詢完畢刪除被實(shí)體化的視圖查詢完畢刪除被實(shí)體化的視圖(臨時(shí)表臨時(shí)表)new鄭州輕

29、工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-51數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理查詢視圖(續(xù))查詢視圖(續(xù)) 視圖消解法(視圖消解法(View Resolution) 進(jìn)行有效性檢查,檢查查詢的表、視圖等是否存在。進(jìn)行有效性檢查,檢查查詢的表、視圖等是否存在。如果存在,則從數(shù)據(jù)字典中取出視圖的定義如果存在,則從數(shù)據(jù)字典中取出視圖的定義 把視圖定義中的子查詢與用戶的查詢結(jié)合起來(lái),轉(zhuǎn)換把視圖定義中的子查詢與用戶的查詢結(jié)合起來(lái),轉(zhuǎn)換成等價(jià)的對(duì)基本表的查詢成等價(jià)的對(duì)基本表的查詢 執(zhí)行執(zhí)行修正修正后的查詢后的查詢鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-52數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理查

30、詢視圖(續(xù))查詢視圖(續(xù))例1 在信息系學(xué)生的視圖中找出年齡小于20歲的學(xué)生。 SELECT Sno,Sage FROM IS_Student WHERE Sage20;IS_Student視圖的定義 (視圖定義例1): CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-53數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理查詢視圖(續(xù))查詢視圖(續(xù)) 視圖實(shí)體化法 視圖消解法轉(zhuǎn)換后的查詢語(yǔ)句為:SELECT Sno,Sage FROM StudentWHE

31、RE Sdept= IS AND Sage=90WHERE Gavg=90;S_G視圖定義:視圖定義: CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-57數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理查詢轉(zhuǎn)換查詢轉(zhuǎn)換錯(cuò)誤:錯(cuò)誤:SELECT Sno,AVG(Grade)FROM SCWHERE AVG(Grade)=90GROUP BY Sno;正確:正確:SELECT Sno,AVG(Grade)FROM SCGROUP BY SnoHAVING AVG(Gr

32、ade)=90;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-58數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.6 視視 圖圖4.6.1 定義視圖定義視圖4.6.2 查詢視圖查詢視圖4.6.3 更新視圖更新視圖4.6.4 視圖的作用視圖的作用鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-59數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.6.3 更新視圖更新視圖用戶角度:更新視圖與更新基本表相同用戶角度:更新視圖與更新基本表相同DBMS實(shí)現(xiàn)視圖更新的方法實(shí)現(xiàn)視圖更新的方法 視圖實(shí)體化法(視圖實(shí)體化法(View Materialization) 視圖消解法(視圖消解法(View Resolution)指定

33、指定WITH CHECK OPTION子句后子句后 DBMS在更新視圖時(shí)會(huì)進(jìn)行檢查,防止用戶通過(guò)視圖對(duì)在更新視圖時(shí)會(huì)進(jìn)行檢查,防止用戶通過(guò)視圖對(duì)不屬不屬于視圖范圍內(nèi)于視圖范圍內(nèi)的基本表數(shù)據(jù)進(jìn)行更新的基本表數(shù)據(jù)進(jìn)行更新鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-60數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理更新視圖(續(xù))更新視圖(續(xù))例1 將信息系學(xué)生視圖IS_Student中學(xué)號(hào)95002 的學(xué)生姓名改為“劉辰”。UPDATE IS_StudentSET Sname= 劉辰WHERE Sno= 95002;轉(zhuǎn)換后的語(yǔ)句:UPDATE StudentSET Sname= 劉辰WHERE Sno=

34、95002 AND Sdept= IS;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-61數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理更新視圖(續(xù))更新視圖(續(xù))例2 向信息系學(xué)生視圖IS_S中插入一個(gè)新的學(xué)生記錄:95029,趙新,20歲INSERTINTO IS_StudentVALUES(95029,趙新,20);轉(zhuǎn)換為對(duì)基本表的更新:INSERTINTO Student(Sno,Sname,Sage,Sdept)VALUES(95029,趙新,20,IS );鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-62數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理更新視圖(續(xù))更新視圖(續(xù))例3 刪除視圖CS

35、_S中學(xué)號(hào)為95029的記錄DELETEFROM IS_StudentWHERE Sno= 95029;轉(zhuǎn)換為對(duì)基本表的更新:DELETEFROM StudentWHERE Sno= 95029 AND Sdept= IS;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-63數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理更新視圖的限制更新視圖的限制一些視圖是不可更新的,因?yàn)閷?duì)這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更新(對(duì)兩類方法均如此)例:視圖S_G為不可更新視圖。 CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade)FROM SCGROU

36、P BY Sno;鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-64數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理更新視圖(續(xù))更新視圖(續(xù))對(duì)于如下更新語(yǔ)句:UPDATE S_GSET Gavg=90WHERE Sno= 95001;無(wú)論實(shí)體化法還是消解法都無(wú)法將其轉(zhuǎn)換成對(duì)基本表SC的更新鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-65數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理實(shí)際系統(tǒng)對(duì)視圖更新的限制實(shí)際系統(tǒng)對(duì)視圖更新的限制允許對(duì)行列子集視圖進(jìn)行更新對(duì)其他類型視圖的更新不同系統(tǒng)有不同限制DB2對(duì)視圖更新的限制:(1) 若視圖是由兩個(gè)以上基本表導(dǎo)出的,則此視圖不允許更新。(2) 若視圖的字段來(lái)自字段表達(dá)

37、式或常數(shù),則不允許對(duì)此視圖執(zhí)行INSERT和UPDATE操作,但允許執(zhí)行DELETE操作。鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-66數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理更新視圖(續(xù))更新視圖(續(xù))(3) 若視圖的字段來(lái)自集函數(shù),則此視圖不允許更新。(4) 若視圖定義中含有GROUP BY子句,則此視圖不允許更新。(5) 若視圖定義中含有DISTINCT短語(yǔ),則此視圖不允許更新。(6) 若視圖定義中有嵌套查詢,并且內(nèi)層查詢的FROM子句中涉及的表也是導(dǎo)出該視圖的基本表,則此視圖不允許更新。(7) 一個(gè)不允許更新的視圖上定義的視圖也不允許更新鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-67數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理更新視圖(續(xù))更新視圖(續(xù))例:視圖GOOD_SC(修課成績(jī)?cè)谄骄煽?jī)之上的元組) CREATE VIEW GOOD_SC AS SELECT Sno,Cno,Grade FROM SC WHERE Grade (SELECT AVG(Grade) FROM SC);鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院鄭州輕工業(yè)學(xué)院軟件職業(yè)技術(shù)學(xué)院1-68數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理4.6 視視 圖圖4.6.1 定義視圖定義視圖

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論