第3章標(biāo)準sql語句詳解_第1頁
第3章標(biāo)準sql語句詳解_第2頁
第3章標(biāo)準sql語句詳解_第3頁
第3章標(biāo)準sql語句詳解_第4頁
第3章標(biāo)準sql語句詳解_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、An Introduction to Database System數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理An Introduction to Database System第三章第三章 關(guān)系數(shù)據(jù)庫標(biāo)準語言關(guān)系數(shù)據(jù)庫標(biāo)準語言SQLSQLAn Introduction to Database System第三章第三章 關(guān)系數(shù)據(jù)庫標(biāo)準語言關(guān)系數(shù)據(jù)庫標(biāo)準語言SQL3.1 SQL概述概述3.2 數(shù)據(jù)定義數(shù)據(jù)定義3.3 查詢查詢3.4 數(shù)據(jù)更新數(shù)據(jù)更新3.5 視圖視圖An Introduction to Database System3.4 數(shù)數(shù) 據(jù)據(jù) 更更 新新 3.4.1 插入數(shù)據(jù)插入數(shù)據(jù)3.4.2 修改數(shù)據(jù)

2、修改數(shù)據(jù)3.4.3 刪除數(shù)據(jù)刪除數(shù)據(jù)An Introduction to Database System3.4.1 插入數(shù)據(jù)插入數(shù)據(jù)n兩種插入數(shù)據(jù)方式兩種插入數(shù)據(jù)方式n 插入單個元組插入單個元組n 插入子查詢結(jié)果插入子查詢結(jié)果An Introduction to Database System1. 插入單個元組插入單個元組n語句格式語句格式INSERTINTO (,)VALUES ( , )n功能功能 將新元組插入指定表中。將新元組插入指定表中。An Introduction to Database System插入單個元組(續(xù))插入單個元組(續(xù))例例1 將一個新學(xué)生記錄將一個新學(xué)生記錄(學(xué)號

3、:(學(xué)號:95020;姓名:陳冬;性別:男;所在系:;姓名:陳冬;性別:男;所在系:IS;年齡:年齡:18歲)插入到歲)插入到Student表中。表中。 INSERT INTO Student VALUES (95020,陳冬陳冬,男男,IS,18);An Introduction to Database System插入單個元組(續(xù))插入單個元組(續(xù))例例2 插入一條選課記錄插入一條選課記錄( 95020,1 )。 INSERT INTO SC(Sno,Cno) VALUES ( 95020 , 1 ); 新插入的記錄在新插入的記錄在Grade列上取空值列上取空值A(chǔ)n Introductio

4、n to Database System插入單個元組(續(xù))插入單個元組(續(xù))n INTO子句子句n指定要插入數(shù)據(jù)的表名及屬性列指定要插入數(shù)據(jù)的表名及屬性列n屬性列的順序可與表定義中的順序不一致屬性列的順序可與表定義中的順序不一致n沒有指定屬性列:表示要插入的是一條完整的元組,沒有指定屬性列:表示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序一致且屬性列屬性與表定義中的順序一致n指定部分屬性列:插入的元組在其余屬性列上取空指定部分屬性列:插入的元組在其余屬性列上取空值值n VALUES子句子句n 提供的值必須與提供的值必須與INTO子句匹配子句匹配值的個數(shù)值的個數(shù)值的類型值的類型An I

5、ntroduction to Database System2. 插入子查詢結(jié)果插入子查詢結(jié)果n語句格式語句格式 INSERT INTO ( , ) 子查詢子查詢;n功能功能 將子查詢結(jié)果插入指定表中將子查詢結(jié)果插入指定表中An Introduction to Database System插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))例例3 對每一個系,求學(xué)生的平均年對每一個系,求學(xué)生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫。齡,并把結(jié)果存入數(shù)據(jù)庫。第一步:建表第一步:建表 CREATE TABLE Deptage (Sdept CHAR(15) /* 系名系名*/ Avgage INT); /*學(xué)生平均年

6、齡學(xué)生平均年齡*/ An Introduction to Database System插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))第二步:插入數(shù)據(jù)第二步:插入數(shù)據(jù) INSERT INTO Deptage(Sdept,Avgage) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;An Introduction to Database System插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))nINTO子句子句(與插入單條元組類似與插入單條元組類似)n指定要插入數(shù)據(jù)的表名及屬性列指定要插入數(shù)據(jù)的表名及屬性列n屬性列的順序可與表定義中的順序不一致屬性列

7、的順序可與表定義中的順序不一致n沒有指定屬性列:表示要插入的是一條完整的元組沒有指定屬性列:表示要插入的是一條完整的元組n指定部分屬性列:插入的元組在其余屬性列上取空值指定部分屬性列:插入的元組在其余屬性列上取空值n 子查詢子查詢nSELECT子句目標(biāo)列必須與子句目標(biāo)列必須與INTO子句匹配子句匹配n值的個數(shù)值的個數(shù)n值的類型值的類型An Introduction to Database System插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))DBMS在執(zhí)行插入語句時會檢查所插元組是在執(zhí)行插入語句時會檢查所插元組是否破壞表上已定義的完整性規(guī)則否破壞表上已定義的完整性規(guī)則n實體完整性實體完整性n參照

8、完整性參照完整性n用戶定義的完整性用戶定義的完整性n對于有對于有NOT NULL約束的屬性列是否提供了非空值約束的屬性列是否提供了非空值n 對于有對于有UNIQUE約束的屬性列是否提供了非重復(fù)值約束的屬性列是否提供了非重復(fù)值n 對于有值域約束的屬性列所提供的屬性值是否在值域范圍內(nèi)對于有值域約束的屬性列所提供的屬性值是否在值域范圍內(nèi)An Introduction to Database System3.4 數(shù)數(shù) 據(jù)據(jù) 更更 新新 3.4.1 插入數(shù)據(jù)插入數(shù)據(jù)3.4.2 修改數(shù)據(jù)修改數(shù)據(jù)3.4.3 刪除數(shù)據(jù)刪除數(shù)據(jù) An Introduction to Database System3.4.2 修

9、改數(shù)據(jù)修改數(shù)據(jù)n語句格式語句格式 UPDATE SET =,= WHERE ;n功能功能修改指定表中滿足修改指定表中滿足WHERE子句條件的元組子句條件的元組An Introduction to Database System修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)(續(xù))n三種修改方式三種修改方式n修改某一個元組的值修改某一個元組的值n修改多個元組的值修改多個元組的值n帶子查詢的修改語句帶子查詢的修改語句An Introduction to Database System1. 修改某一個元組的值修改某一個元組的值例例4 將學(xué)生將學(xué)生95001的年齡改為的年齡改為22歲。歲。 UPDATE Student SET

10、 Sage=22 WHERE Sno= 95001 ; An Introduction to Database System2. 修改多個元組的值修改多個元組的值例例5 將所有學(xué)生的年齡增加將所有學(xué)生的年齡增加1歲。歲。UPDATE Student SET Sage= Sage+1 An Introduction to Database System修改多個元組的值修改多個元組的值(續(xù)續(xù))例例6 將信息系所有學(xué)生的年齡增加將信息系所有學(xué)生的年齡增加1歲。歲。 UPDATE Student SET Sage= Sage+1 WHERE Sdept= IS ;An Introduction to

11、Database System3. 帶子查詢的修改語句帶子查詢的修改語句例例7 將計算機科學(xué)系全體學(xué)生的成績置零將計算機科學(xué)系全體學(xué)生的成績置零UPDATE SC SET Grade=0 WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno);An Introduction to Database System修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)(續(xù))nSET子句子句 指定修改方式指定修改方式 要修改的列要修改的列 修改后取值修改后取值nWHERE子句子句指定要修改的元組指定要修改的元組缺省表示要修改表中的所有元組缺省表示要修改表中的

12、所有元組An Introduction to Database System修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)(續(xù))DBMS在執(zhí)行修改語句時會檢查修改操作在執(zhí)行修改語句時會檢查修改操作是否破壞表上已定義的完整性規(guī)則是否破壞表上已定義的完整性規(guī)則n實體完整性實體完整性n參照完整性參照完整性n用戶定義的完整性用戶定義的完整性n NOT NULL約束約束n UNIQUE約束約束n 值域約束值域約束An Introduction to Database System3.4 數(shù)數(shù) 據(jù)據(jù) 更更 新新 3.4.1 插入數(shù)據(jù)插入數(shù)據(jù)3.4.2 修改數(shù)據(jù)修改數(shù)據(jù)3.4.3 刪除數(shù)據(jù)刪除數(shù)據(jù) An Introduction

13、to Database System3.4.3 刪除數(shù)據(jù)刪除數(shù)據(jù) DELETE FROM WHERE ;功能功能w刪除指定表中滿足刪除指定表中滿足WHERE子句條件的子句條件的元組元組WHERE子句子句w指定要刪除的元組指定要刪除的元組w缺省表示要刪除表中的所有元組缺省表示要刪除表中的所有元組An Introduction to Database System刪除數(shù)據(jù)(續(xù))刪除數(shù)據(jù)(續(xù))n三種刪除方式三種刪除方式n刪除某一個元組的值刪除某一個元組的值n刪除多個元組的值刪除多個元組的值n帶子查詢的刪除語句帶子查詢的刪除語句An Introduction to Database System1.

14、刪除某一個元組的值刪除某一個元組的值例例8 刪除學(xué)號為刪除學(xué)號為95003的學(xué)生記錄。的學(xué)生記錄。 DELETE FROM Student WHERE Sno=95003;An Introduction to Database System2. 刪除多個元組的值刪除多個元組的值例例9 刪除刪除2號課程的所有選課記錄。號課程的所有選課記錄。例例10 刪除所有的學(xué)生選課記錄。刪除所有的學(xué)生選課記錄。 DELETE FROM SC; WHERE Cno=2;DELETE FROM SC;An Introduction to Database System3. 帶子查詢的刪除語句帶子查詢的刪除語句例例

15、11 刪除信息系所有學(xué)生的選課記錄。刪除信息系所有學(xué)生的選課記錄。 DELETE FROM SC WHERE IS= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);An Introduction to Database System刪除數(shù)據(jù)刪除數(shù)據(jù)(續(xù)續(xù))DBMS在執(zhí)行刪除語句時會檢查所插元組在執(zhí)行刪除語句時會檢查所插元組是否破壞表上已定義的完整性規(guī)則是否破壞表上已定義的完整性規(guī)則參照完整性參照完整性不允許刪除不允許刪除級聯(lián)刪除級聯(lián)刪除An Introduction to Database System更新數(shù)據(jù)與數(shù)據(jù)一致性更新數(shù)據(jù)與數(shù)

16、據(jù)一致性DBMS在執(zhí)行插入、刪除、更新語句時必在執(zhí)行插入、刪除、更新語句時必須保證數(shù)據(jù)庫一致性須保證數(shù)據(jù)庫一致性l必須有事務(wù)的概念和原子性必須有事務(wù)的概念和原子性l完整性檢查和保證完整性檢查和保證An Introduction to Database System第三章第三章 關(guān)系數(shù)據(jù)庫標(biāo)準語言關(guān)系數(shù)據(jù)庫標(biāo)準語言SQL3.1 SQL概述概述3.2 數(shù)據(jù)定義數(shù)據(jù)定義3.3 查詢查詢3.4 數(shù)據(jù)更新數(shù)據(jù)更新3.5 視圖視圖An Introduction to Database System3.5 視視 圖圖視圖的特點視圖的特點n虛表,是從一個或幾個基本表(或視圖)虛表,是從一個或幾個基本表(或視圖

17、)導(dǎo)出的表導(dǎo)出的表n只存放視圖的定義,不會出現(xiàn)數(shù)據(jù)冗余只存放視圖的定義,不會出現(xiàn)數(shù)據(jù)冗余n基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變出的數(shù)據(jù)也隨之改變An Introduction to Database System3.5 視視 圖圖基于視圖的操作基于視圖的操作n 查詢查詢n 刪除刪除n 受限更新受限更新n定義基于該視圖的新視圖定義基于該視圖的新視圖An Introduction to Database System3.5 視視 圖圖3.5.1 定義視圖定義視圖3.5.2 查詢視圖查詢視圖3.5.3 更新視圖更新視圖3.5.4 視圖的作用視圖的作用

18、An Introduction to Database System1. 建立視圖建立視圖n語句格式語句格式 CREATE VIEW ( ,) AS WITH CHECK OPTION;An Introduction to Database System行列子集視圖行列子集視圖 例例1 建立信息系學(xué)生的視圖。建立信息系學(xué)生的視圖。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;從單個基本表導(dǎo)出從單個基本表導(dǎo)出只是去掉了基本表的某些行和某些列保留了碼只是去掉了基本表的某些行和某些列保留了碼

19、An Introduction to Database System 建立視圖(續(xù))建立視圖(續(xù))DBMS執(zhí)行執(zhí)行CREATE VIEW語句時只是把語句時只是把視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的的SELECT語句。語句。在對視圖查詢時,按視圖的定義從基本表在對視圖查詢時,按視圖的定義從基本表中將數(shù)據(jù)查出。中將數(shù)據(jù)查出。An Introduction to Database System插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))例例 對每一個系,求學(xué)生的平均年齡,對每一個系,求學(xué)生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫。并把結(jié)果存入數(shù)據(jù)庫。1.創(chuàng)建表,存入數(shù)據(jù)創(chuàng)建表

20、,存入數(shù)據(jù)2.通過視圖通過視圖An Introduction to Database System創(chuàng)建基表存數(shù)據(jù)創(chuàng)建基表存數(shù)據(jù) CREATE TABLE Deptage (Sdept CHAR(15) /* 系名系名*/ Avgage INT); /*學(xué)生平均年齡學(xué)生平均年齡*/ INSERT INTO Deptage(Sdept,vgage) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;An Introduction to Database System直接創(chuàng)建視圖直接創(chuàng)建視圖 Create view VSA(Sdept,vgage)

21、 as SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;An Introduction to Database System組成視圖的屬性列名組成視圖的屬性列名全部省略或全部指定全部省略或全部指定n省略省略: 由子查詢中由子查詢中SELECT目標(biāo)列中的諸字段組成目標(biāo)列中的諸字段組成n明確指定視圖的所有列名明確指定視圖的所有列名:(1) 某個目標(biāo)列是集函數(shù)或列表達式某個目標(biāo)列是集函數(shù)或列表達式(2) 目標(biāo)列為目標(biāo)列為 *(3) 多表連接時選出了幾個同名列作為視圖的字段多表連接時選出了幾個同名列作為視圖的字段(4) 需要在視圖中為某個列啟用新的

22、更合適的名字需要在視圖中為某個列啟用新的更合適的名字An Introduction to Database System 建立視圖(續(xù))建立視圖(續(xù))nWITH CHECK OPTION透過視圖進行增刪改操作時,不得破壞視透過視圖進行增刪改操作時,不得破壞視圖定義中的謂詞條件圖定義中的謂詞條件(即子查詢中的條件表達式)(即子查詢中的條件表達式)An Introduction to Database System WITH CHECK OPTION的視圖的視圖例例2 建立信息系學(xué)生的視圖,并要求透過該視建立信息系學(xué)生的視圖,并要求透過該視圖進行的更新操作只涉及信息系學(xué)生。圖進行的更新操作只涉及信

23、息系學(xué)生。CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS WITH CHECK OPTIONAn Introduction to Database System對對IS_Student視圖的更新操作視圖的更新操作n修改操作:修改操作:DBMS自動加上自動加上Sdept= IS的條件的條件n插入操作:插入操作:DBMS自動檢查自動檢查Sdept屬性值是否為屬性值是否為IS n如果不是,則拒絕該插入操作如果不是,則拒絕該插入操作n刪除操作:刪除操作:DBMS自動加上自動加上Sdept= IS的

24、條件的條件An Introduction to Database System基于多個基表的視圖基于多個基表的視圖例例4 建立選修了建立選修了1號課程的學(xué)生視圖號課程的學(xué)生視圖(包括學(xué)號、包括學(xué)號、姓名、成績姓名、成績)。 CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Cno= 1;An Introduction to Database System基于視圖的視圖基于視圖的視圖例例5 建立選修了建立選修了1號

25、課程且成績在號課程且成績在90分以上分以上的學(xué)生的視圖。的學(xué)生的視圖。 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade=90;An Introduction to Database System帶表達式的視圖帶表達式的視圖例例6 定義一個反映學(xué)生出生年份的視圖定義一個反映學(xué)生出生年份的視圖(包括學(xué)號、姓名、出生年份)。(包括學(xué)號、姓名、出生年份)。 CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2005-Sage FROM Student設(shè)置一些

26、派生屬性列設(shè)置一些派生屬性列, 也也稱為虛擬列稱為虛擬列-Sbirth 帶表達式的視圖必須明確定義組成視圖的各個屬性列名帶表達式的視圖必須明確定義組成視圖的各個屬性列名An Introduction to Database System 建立分組視圖建立分組視圖例例7 將學(xué)生的學(xué)號及他的平均成績定義為一將學(xué)生的學(xué)號及他的平均成績定義為一個視圖個視圖 CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;An Introduction to Database System 建立視圖(續(xù))建立視圖(續(xù))n一類不

27、易擴充的視圖一類不易擴充的視圖n以以 SELECT * 方式創(chuàng)建的視圖可擴充性差,方式創(chuàng)建的視圖可擴充性差,應(yīng)盡可能避免應(yīng)盡可能避免An Introduction to Database System 建立視圖(續(xù))建立視圖(續(xù))例例8將將Student表中所有女生記錄定義為一個表中所有女生記錄定義為一個視圖視圖 CREATE VIEW F_Student1(stdnum,name,sex,age,dept) AS SELECT * FROM Student WHERE Ssex=女女;An Introduction to Database System 建立視圖(續(xù))建立視圖(續(xù))缺點:修改

28、基表缺點:修改基表Student的結(jié)構(gòu)后,的結(jié)構(gòu)后,Student表與表與F_Student1視圖的映象關(guān)系被視圖的映象關(guān)系被破壞,導(dǎo)致該視圖不能正確工作。破壞,導(dǎo)致該視圖不能正確工作。An Introduction to Database System 建立視圖(續(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_

29、Student2視圖的映象關(guān)系。視圖的映象關(guān)系。An Introduction to Database System常見的視圖形式常見的視圖形式n行列子集視圖行列子集視圖nWITH CHECK OPTION的視圖的視圖n基于多個基表的視圖基于多個基表的視圖n基于視圖的視圖基于視圖的視圖n帶表達式的視圖帶表達式的視圖n分組視圖分組視圖An Introduction to Database System2. 刪除視圖刪除視圖nDROP VIEW ;n該語句從數(shù)據(jù)字典中刪除指定的視圖定義該語句從數(shù)據(jù)字典中刪除指定的視圖定義n由該視圖導(dǎo)出的其他視圖定義仍在數(shù)據(jù)字典由該視圖導(dǎo)出的其他視圖定義仍在數(shù)據(jù)字典

30、中,但已不能使用,必須顯式刪除中,但已不能使用,必須顯式刪除n刪除基表時,由該基表導(dǎo)出的所有視圖定義刪除基表時,由該基表導(dǎo)出的所有視圖定義都必須顯式刪除都必須顯式刪除An Introduction to Database System刪除視圖刪除視圖(續(xù))續(xù)) 例例9 刪除視圖刪除視圖IS_S1 DROP VIEW IS_S1; An Introduction to Database System3.5 視視 圖圖3.5.1 定義視圖定義視圖3.5.2 查詢視圖查詢視圖3.5.3 更新視圖更新視圖3.5.4 視圖的作用視圖的作用An Introduction to Database Syste

31、m3.5.2 查詢視圖查詢視圖n從用戶角度:查詢視圖與查詢基本表相同從用戶角度:查詢視圖與查詢基本表相同nDBMS實現(xiàn)實現(xiàn)視圖查詢的方法視圖查詢的方法n實體化視圖(實體化視圖(View Materialization)n有效性檢查:檢查所查詢的視圖是否存在有效性檢查:檢查所查詢的視圖是否存在n執(zhí)行視圖定義,將視圖臨時實體化,生成臨時表執(zhí)行視圖定義,將視圖臨時實體化,生成臨時表n查詢視圖轉(zhuǎn)換為查詢臨時表查詢視圖轉(zhuǎn)換為查詢臨時表n查詢完畢刪除被實體化的視圖查詢完畢刪除被實體化的視圖(臨時表臨時表)An Introduction to Database System查詢視圖(續(xù))查詢視圖(續(xù))n視圖

32、消解法(視圖消解法(View Resolution)n進行有效性檢查,檢查查詢的表、視圖等是否存進行有效性檢查,檢查查詢的表、視圖等是否存在。如果存在,則從數(shù)據(jù)字典中取出視圖的定義在。如果存在,則從數(shù)據(jù)字典中取出視圖的定義n把視圖定義中的子查詢與用戶的查詢結(jié)合起來,把視圖定義中的子查詢與用戶的查詢結(jié)合起來,轉(zhuǎn)換成等價的對基本表的查詢轉(zhuǎn)換成等價的對基本表的查詢n執(zhí)行執(zhí)行修正修正后的查詢后的查詢An Introduction to Database System查詢視圖(續(xù))查詢視圖(續(xù))例例1 在信息系學(xué)生的視圖中找出年齡小于在信息系學(xué)生的視圖中找出年齡小于20歲的學(xué)生。歲的學(xué)生。 SELECT

33、 Sno,Sage FROM IS_Student WHERE Sage20;IS_Student視圖的定義視圖的定義 (視圖定義例視圖定義例1): CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;An Introduction to Database System查詢視圖(續(xù))查詢視圖(續(xù))n視圖實體化法視圖實體化法n視圖消解法視圖消解法轉(zhuǎn)換后的查詢語句為:轉(zhuǎn)換后的查詢語句為:SELECT Sno,Sage FROM StudentWHERE Sdept= IS AND Sage=90W

34、HERE Gavg=90;S_G視圖定義:視圖定義: CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;An Introduction to Database System查詢轉(zhuǎn)換查詢轉(zhuǎn)換錯誤:錯誤:SELECT Sno,AVG(Grade)FROM SCWHERE AVG(Grade)=90GROUP BY Sno;正確:正確:SELECT Sno,AVG(Grade)FROM SCGROUP BY SnoHAVING AVG(Grade)=90;An Introduction to Database

35、 System3.5 視視 圖圖3.5.1 定義視圖定義視圖3.5.2 查詢視圖查詢視圖3.5.3 更新視圖更新視圖3.5.4 視圖的作用視圖的作用An Introduction to Database System3.5.3 更新視圖更新視圖n用戶角度:更新視圖與更新基本表相同用戶角度:更新視圖與更新基本表相同nDBMS實現(xiàn)視圖更新的方法實現(xiàn)視圖更新的方法n視圖實體化法(視圖實體化法(View Materialization)n視圖消解法(視圖消解法(View Resolution)n指定指定WITH CHECK OPTION子句后子句后 DBMS在更新視圖時會進行檢查,防止用戶通過視在更新

36、視圖時會進行檢查,防止用戶通過視圖對圖對不屬于視圖范圍內(nèi)不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進行更新的基本表數(shù)據(jù)進行更新An Introduction to Database System更新視圖(續(xù))更新視圖(續(xù))例例1 將信息系學(xué)生視圖將信息系學(xué)生視圖IS_Student中學(xué)號中學(xué)號95002的學(xué)生姓名改為的學(xué)生姓名改為“劉辰劉辰”。UPDATE IS_Student SET Sname= 劉辰劉辰WHERE Sno= 95002;轉(zhuǎn)換后的語句:轉(zhuǎn)換后的語句:UPDATE Student SET Sname= 劉辰劉辰WHERE Sno= 95002 AND Sdept= IS;An Introd

37、uction to Database System更新視圖(續(xù))更新視圖(續(xù))例例2 向信息系學(xué)生視圖向信息系學(xué)生視圖IS_S中插入一個新的中插入一個新的學(xué)生記錄:學(xué)生記錄:95029,趙新,趙新,20歲歲INSERTINTO IS_StudentVALUES(95029,趙新趙新,20);轉(zhuǎn)換為對基本表的更新:轉(zhuǎn)換為對基本表的更新:INSERTINTO Student(Sno,Sname,Sage,Sdept)VALUES(95029,趙新趙新,20,IS );An Introduction to Database System更新視圖(續(xù))更新視圖(續(xù))例例3 刪除視圖刪除視圖CS_S中學(xué)

38、號為中學(xué)號為95029的記錄的記錄DELETEFROM IS_StudentWHERE Sno= 95029;轉(zhuǎn)換為對基本表的更新:轉(zhuǎn)換為對基本表的更新:DELETEFROM StudentWHERE Sno= 95029 AND Sdept= IS;An Introduction to Database System更新視圖的限制更新視圖的限制n一些視圖是不可更新的,因為對這些視圖的更一些視圖是不可更新的,因為對這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應(yīng)基本表的新不能唯一地有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新更新(對兩類方法均如此對兩類方法均如此)例:視圖例:視圖S_G為不可更新視圖。為不可更新視圖。 CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;An Introduction to Database System更新視圖(續(xù))更新視圖(續(xù))對于如下更新語句:對于如下更新語句:UPDATE S_GSET Gavg=90WHERE Sno= 95001;無論實體化法還是消解法都無法將其轉(zhuǎn)換成對無論實體化法還是消解法都無法將其轉(zhuǎn)換成對基本表基本表SC的更

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論