![數(shù)據(jù)庫第4章2_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/69091c56-f526-4208-9f48-2d6bde3147e6/69091c56-f526-4208-9f48-2d6bde3147e61.gif)
![數(shù)據(jù)庫第4章2_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/69091c56-f526-4208-9f48-2d6bde3147e6/69091c56-f526-4208-9f48-2d6bde3147e62.gif)
![數(shù)據(jù)庫第4章2_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/69091c56-f526-4208-9f48-2d6bde3147e6/69091c56-f526-4208-9f48-2d6bde3147e63.gif)
![數(shù)據(jù)庫第4章2_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/69091c56-f526-4208-9f48-2d6bde3147e6/69091c56-f526-4208-9f48-2d6bde3147e64.gif)
![數(shù)據(jù)庫第4章2_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/69091c56-f526-4208-9f48-2d6bde3147e6/69091c56-f526-4208-9f48-2d6bde3147e65.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-1數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.5 數(shù) 據(jù) 更 新 4.5.1 插入數(shù)據(jù)4.5.2 修改數(shù)據(jù)4.5.3 刪除數(shù)據(jù) 鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-2數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.5.1 插入數(shù)據(jù)插入數(shù)據(jù)兩種插入數(shù)據(jù)方式兩種插入數(shù)據(jù)方式v 插入單個元組插入單個元組v 插入子查詢結(jié)果插入子查詢結(jié)果鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-3數(shù)據(jù)庫原理數(shù)據(jù)庫原理1. 插入單個元組插入單個元組語句格式語句格式INSERTINTO (,)VALUES ( , )功能功能 將新元組插入指定表中。將新元
2、組插入指定表中。鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-4數(shù)據(jù)庫原理數(shù)據(jù)庫原理插入單個元組(續(xù))插入單個元組(續(xù))例例1 將一個新學生記錄將一個新學生記錄(學號:(學號:95020;姓名:陳冬;性別:男;所在系:;姓名:陳冬;性別:男;所在系:IS;年齡:;年齡:18歲)插入到歲)插入到Student表中。表中。 INSERT INTO Student VALUES (95020,陳冬陳冬,男男,IS,18);鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-5數(shù)據(jù)庫原理數(shù)據(jù)庫原理插入單個元組(續(xù))插入單個元組(續(xù))例例2 插入一條選課記錄插入一條選課記錄
3、( 95020,1 )。 INSERT INTO SC(Sno,Cno) VALUES ( 95020 , 1 ); 新插入的記錄在新插入的記錄在Grade列上取空值列上取空值鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-6數(shù)據(jù)庫原理數(shù)據(jù)庫原理插入單個元組(續(xù))插入單個元組(續(xù)) INTO子句子句v指定要插入數(shù)據(jù)的表名及屬性列指定要插入數(shù)據(jù)的表名及屬性列v屬性列的順序可與表定義中的順序不一致屬性列的順序可與表定義中的順序不一致v沒有指定屬性列:表示要插入的是一條完整的元組,且沒有指定屬性列:表示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序一致屬性列屬性與表定義中的順
4、序一致v指定部分屬性列:插入的元組在其余屬性列上取空值指定部分屬性列:插入的元組在其余屬性列上取空值 VALUES子句子句v 提供的值必須與提供的值必須與INTO子句匹配子句匹配值的個數(shù)值的個數(shù)值的類型值的類型鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-7數(shù)據(jù)庫原理數(shù)據(jù)庫原理2. 插入子查詢結(jié)果插入子查詢結(jié)果語句格式語句格式 INSERT INTO ( , ) 子查詢;子查詢;功能功能 將子查詢結(jié)果插入指定表中將子查詢結(jié)果插入指定表中鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-8數(shù)據(jù)庫原理數(shù)據(jù)庫原理插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))例例3 對每一個
5、系,求學生的平均年齡,并把結(jié)果存對每一個系,求學生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫。入數(shù)據(jù)庫。第一步:建表第一步:建表 CREATE TABLE Deptage (Sdept CHAR(15) /* 系名系名*/ Avgage SMALLINT); /*學生平均年齡學生平均年齡*/ 鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-9數(shù)據(jù)庫原理數(shù)據(jù)庫原理插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))第二步:插入數(shù)據(jù)第二步:插入數(shù)據(jù) INSERT INTO Deptage(Sdept,Avgage) SELECT Sdept,AVG(Sage) FROM Student GROUP BY
6、Sdept;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-10數(shù)據(jù)庫原理數(shù)據(jù)庫原理插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))vINTO子句子句(與插入單條元組類似與插入單條元組類似)v指定要插入數(shù)據(jù)的表名及屬性列指定要插入數(shù)據(jù)的表名及屬性列v屬性列的順序可與表定義中的順序不一致屬性列的順序可與表定義中的順序不一致v沒有指定屬性列:表示要插入的是一條完整的元沒有指定屬性列:表示要插入的是一條完整的元組組v指定部分屬性列:插入的元組在其余屬性列上取指定部分屬性列:插入的元組在其余屬性列上取空值空值v 子查詢子查詢vSELECT子句目標列必須與子句目標列必須與INTO子句匹配子句匹配
7、v值的個數(shù)值的個數(shù)v值的類型值的類型鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-11數(shù)據(jù)庫原理數(shù)據(jù)庫原理插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))DBMS在執(zhí)行插入語句時會檢查所插元組是在執(zhí)行插入語句時會檢查所插元組是否破壞表上已定義的完整性規(guī)則否破壞表上已定義的完整性規(guī)則v實體完整性實體完整性v參照完整性參照完整性v用戶定義的完整性用戶定義的完整性v對于有對于有NOT NULL約束的屬性列是否提供了非空值約束的屬性列是否提供了非空值v 對于有對于有UNIQUE約束的屬性列是否提供了非重復(fù)值約束的屬性列是否提供了非重復(fù)值v 對于有值域約束的屬性列所提供的屬性值是否在值域范對于
8、有值域約束的屬性列所提供的屬性值是否在值域范圍內(nèi)圍內(nèi)鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-12數(shù)據(jù)庫原理數(shù)據(jù)庫原理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è)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-13數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.5.2 修改數(shù)據(jù)修改數(shù)據(jù)語句格式語句格式 UPDATE SET =,= WHERE ;功能功能修改指定表中滿足修改指定表中滿足WHERE子句條件的元組子句條件的元組鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-14數(shù)據(jù)庫原理數(shù)據(jù)庫原
9、理修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)(續(xù))三種修改方式三種修改方式v修改某一個元組的值修改某一個元組的值v修改多個元組的值修改多個元組的值v帶子查詢的修改語句帶子查詢的修改語句鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-15數(shù)據(jù)庫原理數(shù)據(jù)庫原理1. 修改某一個元組的值修改某一個元組的值例例4 將學生將學生95001的年齡改為的年齡改為22歲。歲。 UPDATE Student SET Sage=22 WHERE Sno= 95001 ; 鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-16數(shù)據(jù)庫原理數(shù)據(jù)庫原理2. 修改多個元組的值修改多個元組的值例例5 將所有學生的年齡
10、增加將所有學生的年齡增加1歲。歲。 UPDATE Student SET Sage= Sage+1;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-17數(shù)據(jù)庫原理數(shù)據(jù)庫原理修改多個元組的值修改多個元組的值(續(xù)續(xù))例例6 將信息系所有學生的年齡增加將信息系所有學生的年齡增加1歲。歲。 UPDATE Student SET Sage= Sage+1 WHERE Sdept= IS ;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-18數(shù)據(jù)庫原理數(shù)據(jù)庫原理3. 帶子查詢的修改語句帶子查詢的修改語句例例7 將計算機科學系全體學生的成績置零。將計算機科學系全體學生的成績置
11、零。 UPDATE SC SET Grade=0 WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno);鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-19數(shù)據(jù)庫原理數(shù)據(jù)庫原理修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)(續(xù))vSET子句子句 指定修改方式指定修改方式 要修改的列要修改的列 修改后取值修改后取值vWHERE子句子句指定要修改的元組指定要修改的元組缺省表示要修改表中的所有元組缺省表示要修改表中的所有元組鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-20數(shù)據(jù)庫原理數(shù)據(jù)庫原理修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)
12、(續(xù))DBMS在執(zhí)行修改語句時會檢查修改操作在執(zhí)行修改語句時會檢查修改操作是否破壞表上已定義的完整性規(guī)則是否破壞表上已定義的完整性規(guī)則v實體完整性實體完整性v主碼不允許修改主碼不允許修改v用戶定義的完整性用戶定義的完整性v NOT NULL約束約束v UNIQUE約束約束v 值域約束值域約束鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-21數(shù)據(jù)庫原理數(shù)據(jù)庫原理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è)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-22數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.5.3 刪
13、除數(shù)據(jù)刪除數(shù)據(jù) DELETE FROM WHERE ;功能功能w刪除指定表中滿足刪除指定表中滿足WHERE子句條件的子句條件的元組元組WHERE子句子句w指定要刪除的元組指定要刪除的元組w缺省表示要修改表中的所有元組缺省表示要修改表中的所有元組鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-23數(shù)據(jù)庫原理數(shù)據(jù)庫原理刪除數(shù)據(jù)(續(xù))刪除數(shù)據(jù)(續(xù))三種刪除方式三種刪除方式v刪除某一個元組的值刪除某一個元組的值v刪除多個元組的值刪除多個元組的值v帶子查詢的刪除語句帶子查詢的刪除語句鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-24數(shù)據(jù)庫原理數(shù)據(jù)庫原理1. 刪除某一個元
14、組的值刪除某一個元組的值例8 刪除學號為95019的學生記錄。 DELETE FROM Student WHERE Sno=95019;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-25數(shù)據(jù)庫原理數(shù)據(jù)庫原理2. 刪除多個元組的值刪除多個元組的值例9 刪除2號課程的所有選課記錄。 DELETE FROM SC; WHERE Cno=2;例10 刪除所有的學生選課記錄。 DELETE FROM SC;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-26數(shù)據(jù)庫原理數(shù)據(jù)庫原理3. 帶子查詢的刪除語句帶子查詢的刪除語句例11 刪除計算機科學系所有學生的選課記錄。 DEL
15、ETE FROM SC WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-27數(shù)據(jù)庫原理數(shù)據(jù)庫原理刪除數(shù)據(jù)刪除數(shù)據(jù)(續(xù)續(xù))DBMS在執(zhí)行插入語句時會檢查所插元組是否破壞表上已定義的完整性規(guī)則參照完整性不允許刪除級聯(lián)刪除鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-28數(shù)據(jù)庫原理數(shù)據(jù)庫原理更新數(shù)據(jù)與數(shù)據(jù)一致性更新數(shù)據(jù)與數(shù)據(jù)一致性DBMS在執(zhí)行插入、刪除、更新語句時必須保證數(shù)據(jù)庫一致性必須有事務(wù)的概念和原子性完整性檢查和保證鄭州輕工業(yè)學院軟件
16、職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-29數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.6 視視 圖圖視圖的特點虛表,是從一個或幾個基本表(或視圖)導出的表只存放視圖的定義,不會出現(xiàn)數(shù)據(jù)冗余基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-30數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.6 視視 圖圖基于視圖的操作 查詢 刪除 受限更新定義基于該視圖的新視圖鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-31數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.6 視視 圖圖3.5.1 定義視圖定義視圖3.5.2 查詢視圖查詢視圖3.5.3 更新視圖更新視圖3.5.4 視圖的
17、作用視圖的作用鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-32數(shù)據(jù)庫原理數(shù)據(jù)庫原理1. 建立視圖語句格式 CREATE VIEW ( ,) AS WITH CHECK OPTION;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-33數(shù)據(jù)庫原理數(shù)據(jù)庫原理 建立視圖(續(xù))建立視圖(續(xù))DBMS執(zhí)行CREATE VIEW語句時只是把視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT語句。在對視圖查詢時,按視圖的定義從基本表中將數(shù)據(jù)查出。鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-34數(shù)據(jù)庫原理數(shù)據(jù)庫原理組成視圖的屬性列名組成視圖的屬性列名全部
18、省略或全部指定 省略: 由子查詢中SELECT目標列中的諸字段組成 明確指定視圖的所有列名:(1) 某個目標列是集函數(shù)或列表達式(2) 目標列為 *(3) 多表連接時選出了幾個同名列作為視圖的字段(4) 需要在視圖中為某個列啟用新的更合適的名字鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-35數(shù)據(jù)庫原理數(shù)據(jù)庫原理行列子集視圖行列子集視圖 例1 建立信息系學生的視圖。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;從單個基本表導出只是去掉了基本表的某些行和某些列保留了碼鄭
19、州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-36數(shù)據(jù)庫原理數(shù)據(jù)庫原理 建立視圖(續(xù))建立視圖(續(xù))WITH CHECK OPTION透過視圖進行增刪改操作時,不得破壞視圖定義中的謂詞條件(即子查詢中的條件表達式)鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-37數(shù)據(jù)庫原理數(shù)據(jù)庫原理 WITH CHECK OPTION的視圖的視圖例2 建立信息系學生的視圖,并要求透過該視圖進行的更新操作只涉及信息系學生。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS W
20、ITH CHECK OPTION;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-38數(shù)據(jù)庫原理數(shù)據(jù)庫原理對對IS_Student視圖的更新操作視圖的更新操作修改操作:修改操作:DBMS自動加上自動加上Sdept= IS的條件的條件刪除操作:刪除操作:DBMS自動加上自動加上Sdept= IS的條件的條件插入操作:插入操作:DBMS自動檢查自動檢查Sdept屬性值是否為屬性值是否為IS 如果不是,則拒絕該插入操作如果不是,則拒絕該插入操作 如果沒有提供如果沒有提供Sdept屬性值,則自動定義屬性值,則自動定義Sdept為為IS鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)
21、技術(shù)學院1-39數(shù)據(jù)庫原理數(shù)據(jù)庫原理基于多個基表的視圖基于多個基表的視圖例例4 建立信息系選修了建立信息系選修了1號課程的學生視圖。號課程的學生視圖。 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è)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-40數(shù)據(jù)庫原理數(shù)據(jù)庫原理基于視圖的視圖基于視圖的視圖例例5 建立信息系選修了建立信息系選修了1號課程且成績在
22、號課程且成績在90分以上的學分以上的學生的視圖。生的視圖。 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade=90;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-41數(shù)據(jù)庫原理數(shù)據(jù)庫原理帶表達式的視圖帶表達式的視圖例例6 定義一個反映學生出生年份的視圖。定義一個反映學生出生年份的視圖。 CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2000-Sage FROM Student設(shè)置一些派生屬性列設(shè)置一些派生屬性列, 也也稱為虛擬列稱
23、為虛擬列-Sbirth 帶表達式的視圖必須明確定義組成視圖的各個屬帶表達式的視圖必須明確定義組成視圖的各個屬性列名性列名鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-42數(shù)據(jù)庫原理數(shù)據(jù)庫原理 建立分組視圖建立分組視圖例例7 將學生的學號及他的平均成績定義為一個視圖將學生的學號及他的平均成績定義為一個視圖 假設(shè)假設(shè)SC表中表中“成績成績”列列Grade為數(shù)字型為數(shù)字型 CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-43數(shù)
24、據(jù)庫原理數(shù)據(jù)庫原理 建立視圖(續(xù))建立視圖(續(xù))一類不易擴充的視圖一類不易擴充的視圖 以以 SELECT * 方式創(chuàng)建的視圖可擴充性差,應(yīng)盡可能避方式創(chuàng)建的視圖可擴充性差,應(yīng)盡可能避免免鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-44數(shù)據(jù)庫原理數(shù)據(jù)庫原理 建立視圖(續(xù))建立視圖(續(xù))例例8將將Student表中所有女生記錄定義為一個視圖表中所有女生記錄定義為一個視圖 CREATE VIEW F_Student1(stdnum,name,sex,age,dept) AS SELECT * FROM Student WHERE Ssex=女女;缺點:修改基表缺點:修改基表Stu
25、dent的結(jié)構(gòu)后,的結(jié)構(gòu)后,Student表表與與F_Student1視圖的映象關(guān)系被破壞,視圖的映象關(guān)系被破壞,導致該視圖不能正確工作。導致該視圖不能正確工作。鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-45數(shù)據(jù)庫原理數(shù)據(jù)庫原理 建立視圖(續(xù))建立視圖(續(xù)) CREATE VIEW F_Student2 (stdnum,name,sex,age,dept) AS SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student WHERE Ssex=女女;為基表為基表Student增加屬性列不會破壞增加屬性列不會破壞Student表表與與F_St
26、udent2視圖的映象關(guān)系。視圖的映象關(guān)系。鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-46數(shù)據(jù)庫原理數(shù)據(jù)庫原理常見的視圖形式常見的視圖形式 行列子集視圖行列子集視圖 WITH CHECK OPTION的視圖的視圖 基于多個基表的視圖基于多個基表的視圖 基于視圖的視圖基于視圖的視圖 帶表達式的視圖帶表達式的視圖 分組視圖分組視圖鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-47數(shù)據(jù)庫原理數(shù)據(jù)庫原理2. 刪除視圖刪除視圖DROP VIEW ; 該語句從數(shù)據(jù)字典中刪除指定的視圖定義該語句從數(shù)據(jù)字典中刪除指定的視圖定義 由該視圖導出的其他視圖定義仍在數(shù)據(jù)字典中,
27、但已不由該視圖導出的其他視圖定義仍在數(shù)據(jù)字典中,但已不能使用,必須顯式刪除能使用,必須顯式刪除 刪除基表時,由該基表導出的所有視圖定義都必須顯式刪除基表時,由該基表導出的所有視圖定義都必須顯式刪除刪除鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-48數(shù)據(jù)庫原理數(shù)據(jù)庫原理刪除視圖刪除視圖(續(xù))續(xù)) 例例9 刪除視圖刪除視圖IS_S1 DROP VIEW IS_S1; 鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-49數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.6 視視 圖圖4.6.1 定義視圖定義視圖4.6.2 查詢視圖查詢視圖4.6.3 更新視圖更新視圖4.6.4 視圖的作用視
28、圖的作用鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-50數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.6.2 查詢視圖查詢視圖從用戶角度:查詢視圖與查詢基本表相同從用戶角度:查詢視圖與查詢基本表相同DBMS實現(xiàn)實現(xiàn)視圖查詢的方法視圖查詢的方法 實體化視圖(實體化視圖(View Materialization) 有效性檢查:檢查所查詢的視圖是否存在有效性檢查:檢查所查詢的視圖是否存在 執(zhí)行視圖定義,將視圖臨時實體化,生成臨時表執(zhí)行視圖定義,將視圖臨時實體化,生成臨時表 查詢視圖轉(zhuǎn)換為查詢臨時表查詢視圖轉(zhuǎn)換為查詢臨時表 查詢完畢刪除被實體化的視圖查詢完畢刪除被實體化的視圖(臨時表臨時表)new鄭州輕
29、工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-51數(shù)據(jù)庫原理數(shù)據(jù)庫原理查詢視圖(續(xù))查詢視圖(續(xù)) 視圖消解法(視圖消解法(View Resolution) 進行有效性檢查,檢查查詢的表、視圖等是否存在。進行有效性檢查,檢查查詢的表、視圖等是否存在。如果存在,則從數(shù)據(jù)字典中取出視圖的定義如果存在,則從數(shù)據(jù)字典中取出視圖的定義 把視圖定義中的子查詢與用戶的查詢結(jié)合起來,轉(zhuǎn)換把視圖定義中的子查詢與用戶的查詢結(jié)合起來,轉(zhuǎn)換成等價的對基本表的查詢成等價的對基本表的查詢 執(zhí)行執(zhí)行修正修正后的查詢后的查詢鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-52數(shù)據(jù)庫原理數(shù)據(jù)庫原理查
30、詢視圖(續(xù))查詢視圖(續(xù))例1 在信息系學生的視圖中找出年齡小于20歲的學生。 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è)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-53數(shù)據(jù)庫原理數(shù)據(jù)庫原理查詢視圖(續(xù))查詢視圖(續(xù)) 視圖實體化法 視圖消解法轉(zhuǎn)換后的查詢語句為: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è)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-57數(shù)據(jù)庫原理數(shù)據(jù)庫原理查詢轉(zhuǎn)換查詢轉(zhuǎn)換錯誤:錯誤: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è)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-58數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.6 視視 圖圖4.6.1 定義視圖定義視圖4.6.2 查詢視圖查詢視圖4.6.3 更新視圖更新視圖4.6.4 視圖的作用視圖的作用鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-59數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.6.3 更新視圖更新視圖用戶角度:更新視圖與更新基本表相同用戶角度:更新視圖與更新基本表相同DBMS實現(xiàn)視圖更新的方法實現(xiàn)視圖更新的方法 視圖實體化法(視圖實體化法(View Materialization) 視圖消解法(視圖消解法(View Resolution)指定
33、指定WITH CHECK OPTION子句后子句后 DBMS在更新視圖時會進行檢查,防止用戶通過視圖對在更新視圖時會進行檢查,防止用戶通過視圖對不屬不屬于視圖范圍內(nèi)于視圖范圍內(nèi)的基本表數(shù)據(jù)進行更新的基本表數(shù)據(jù)進行更新鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-60數(shù)據(jù)庫原理數(shù)據(jù)庫原理更新視圖(續(xù))更新視圖(續(xù))例1 將信息系學生視圖IS_Student中學號95002 的學生姓名改為“劉辰”。UPDATE IS_StudentSET Sname= 劉辰WHERE Sno= 95002;轉(zhuǎn)換后的語句:UPDATE StudentSET Sname= 劉辰WHERE Sno=
34、95002 AND Sdept= IS;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-61數(shù)據(jù)庫原理數(shù)據(jù)庫原理更新視圖(續(xù))更新視圖(續(xù))例2 向信息系學生視圖IS_S中插入一個新的學生記錄:95029,趙新,20歲INSERTINTO IS_StudentVALUES(95029,趙新,20);轉(zhuǎn)換為對基本表的更新:INSERTINTO Student(Sno,Sname,Sage,Sdept)VALUES(95029,趙新,20,IS );鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-62數(shù)據(jù)庫原理數(shù)據(jù)庫原理更新視圖(續(xù))更新視圖(續(xù))例3 刪除視圖CS
35、_S中學號為95029的記錄DELETEFROM IS_StudentWHERE Sno= 95029;轉(zhuǎn)換為對基本表的更新:DELETEFROM StudentWHERE Sno= 95029 AND Sdept= IS;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-63數(shù)據(jù)庫原理數(shù)據(jù)庫原理更新視圖的限制更新視圖的限制一些視圖是不可更新的,因為對這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新(對兩類方法均如此)例:視圖S_G為不可更新視圖。 CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade)FROM SCGROU
36、P BY Sno;鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-64數(shù)據(jù)庫原理數(shù)據(jù)庫原理更新視圖(續(xù))更新視圖(續(xù))對于如下更新語句:UPDATE S_GSET Gavg=90WHERE Sno= 95001;無論實體化法還是消解法都無法將其轉(zhuǎn)換成對基本表SC的更新鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-65數(shù)據(jù)庫原理數(shù)據(jù)庫原理實際系統(tǒng)對視圖更新的限制實際系統(tǒng)對視圖更新的限制允許對行列子集視圖進行更新對其他類型視圖的更新不同系統(tǒng)有不同限制DB2對視圖更新的限制:(1) 若視圖是由兩個以上基本表導出的,則此視圖不允許更新。(2) 若視圖的字段來自字段表達
37、式或常數(shù),則不允許對此視圖執(zhí)行INSERT和UPDATE操作,但允許執(zhí)行DELETE操作。鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-66數(shù)據(jù)庫原理數(shù)據(jù)庫原理更新視圖(續(xù))更新視圖(續(xù))(3) 若視圖的字段來自集函數(shù),則此視圖不允許更新。(4) 若視圖定義中含有GROUP BY子句,則此視圖不允許更新。(5) 若視圖定義中含有DISTINCT短語,則此視圖不允許更新。(6) 若視圖定義中有嵌套查詢,并且內(nèi)層查詢的FROM子句中涉及的表也是導出該視圖的基本表,則此視圖不允許更新。(7) 一個不允許更新的視圖上定義的視圖也不允許更新鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-67數(shù)據(jù)庫原理數(shù)據(jù)庫原理更新視圖(續(xù))更新視圖(續(xù))例:視圖GOOD_SC(修課成績在平均成績之上的元組) CREATE VIEW GOOD_SC AS SELECT Sno,Cno,Grade FROM SC WHERE Grade (SELECT AVG(Grade) FROM SC);鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院鄭州輕工業(yè)學院軟件職業(yè)技術(shù)學院1-68數(shù)據(jù)庫原理數(shù)據(jù)庫原理4.6 視視 圖圖4.6.1 定義視圖定義視圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025工程建設(shè)招標投標合同履約銀行保證書
- Unit 1 Playtime Lesson 3(說課稿)-2023-2024學年人教新起點版英語二年級下冊
- 2023九年級歷史下冊 第一單元 殖民地人民的反抗與資本主義制度的擴展第3課 美國內(nèi)戰(zhàn)說課稿 新人教版
- 2025泵車租賃合同
- 2024-2025學年高中歷史 專題二 近代中國資本主義的曲折發(fā)展 2.1 近代中國民族工業(yè)的興起說課稿1 人民版必修2
- 養(yǎng)生館前臺合同范例
- 代理經(jīng)營店鋪合同范例
- 2024年五年級數(shù)學下冊 3 因數(shù)與倍數(shù)第五課時 質(zhì)數(shù)和合數(shù)說課稿 蘇教版
- 2023八年級物理下冊 第十章 機械與人第一節(jié) 科學探究:杠桿的平衡條件第2課時 杠桿的分類與綜合運用說課稿 (新版)滬科版
- boo模式合同范例
- 華為經(jīng)營管理-華為的研發(fā)管理(6版)
- 鋰離子電池生產(chǎn)工藝流程圖
- 平衡計分卡-化戰(zhàn)略為行動
- 幼兒園小班下學期期末家長會PPT模板
- 礦山安全培訓課件-地下礦山開采安全技術(shù)
- 【課件】DNA片段的擴增及電泳鑒定課件高二下學期生物人教版(2019)選擇性必修3
- GB/T 6417.1-2005金屬熔化焊接頭缺欠分類及說明
- 2023年湖北成人學位英語考試真題及答案
- 《社會主義市場經(jīng)濟理論(第三版)》第七章社會主義市場經(jīng)濟規(guī)則論
- 《腰椎間盤突出》課件
- simotion輪切解決方案與應(yīng)用手冊
評論
0/150
提交評論