版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、2022/4/30數(shù)據(jù)庫技術(shù)與應(yīng)用數(shù)據(jù)庫技術(shù)與應(yīng)用Database Technology and Application2013年4月第三章第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL2022/4/303.4 3.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ù) 2022/4/303.4.1 3.4.1 插入數(shù)據(jù)插入數(shù)據(jù)v兩種插入數(shù)據(jù)方式兩種插入數(shù)據(jù)方式1. 插入元組插入元組2. 插入子查詢結(jié)果插入子查詢結(jié)果可以一次插入多個元組可以一次插入多個元組 2022/4/30一、插入元組一、插入元組v 語句格式語句格式INSERTI
2、NTO (,)VALUES ( , )v 功能功能n將新元組插入指定表中將新元組插入指定表中2022/4/30插入元組(續(xù))插入元組(續(xù))v INTO子句子句M指定要插入數(shù)據(jù)的表名及屬性列指定要插入數(shù)據(jù)的表名及屬性列M屬性列的順序可與表定義中的順序不一致屬性列的順序可與表定義中的順序不一致M沒有指定屬性列沒有指定屬性列:表示要插入的是一條完整的元組,且:表示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序一致屬性列屬性與表定義中的順序一致M指定部分屬性列:插入的元組在其余屬性列上取空值指定部分屬性列:插入的元組在其余屬性列上取空值v VALUES子句子句M提供的值必須與提供的值必須與IN
3、TO子句匹配子句匹配值的個數(shù)值的個數(shù)值的類型值的類型2022/4/30插入元組(續(xù))插入元組(續(xù))例例1 將一個新學(xué)生元組(學(xué)號:將一個新學(xué)生元組(學(xué)號:0903128;姓名:;姓名:陳冬;性別:男;所在系:陳冬;性別:男;所在系:IS;年齡:;年齡:18歲)插入歲)插入到到Student表中。表中。 INSERT INTO Student (Sno, Sname, Ssex, Sdept, Sage) VALUES (0903128,陳冬陳冬,男男,IS,18);2022/4/30 例例2 2將學(xué)生張成民的信息插入到將學(xué)生張成民的信息插入到Student表中表中 INSERT INTO St
4、udent VALUES (0903126, 張成民張成民, 男男,18,CS); 插入元組(續(xù))插入元組(續(xù))例例3 插入一條選課記錄插入一條選課記錄( 0903128,1 )。 INSERT INTO SC(Sno,Cno) VALUES ( 0903128 , 1 ); RDBMS將在新插入記錄的將在新插入記錄的Grade列上自動地賦空值。列上自動地賦空值。 或者:或者: INSERT INTO SC VALUES ( 0903128 , 1 ,NULL);2022/4/30二、插入子查詢結(jié)果二、插入子查詢結(jié)果v語句格式語句格式 INSERT INTO ( , ) 子查詢子查詢;v功能功
5、能 將子查詢結(jié)果插入指定表中將子查詢結(jié)果插入指定表中2022/4/30插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))v INTO子句子句(與插入元組類似與插入元組類似)v 子查詢子查詢nSELECT子句目標(biāo)列必須與子句目標(biāo)列必須與INTO子句匹配子句匹配值的個數(shù)值的個數(shù)值的類型值的類型2022/4/30插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))例例4 對每一個系,求學(xué)生的平均年齡,并把結(jié)果存對每一個系,求學(xué)生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫。入數(shù)據(jù)庫。第一步:建表第一步:建表 CREATE TABLE Dept_age (Sdept CHAR(15) /* 系名系名*/ Avg_age SMALLINT
6、); /*學(xué)生平均年齡學(xué)生平均年齡*/ 2022/4/30插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))第二步:插入數(shù)據(jù)第二步:插入數(shù)據(jù) INSERT INTO Dept_age(Sdept,Avg_age) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;2022/4/30插入子查詢結(jié)果(續(xù))插入子查詢結(jié)果(續(xù))RDBMS在執(zhí)行插入語句時會檢查所插元組是否破壞在執(zhí)行插入語句時會檢查所插元組是否破壞表上已定義的表上已定義的完整性規(guī)則完整性規(guī)則:M實體完整性實體完整性M參照完整性參照完整性M用戶定義的完整性用戶定義的完整性NOT NULL約束約束U
7、NIQUE約束約束值域約束值域約束2022/4/303.4 3.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ù) 2022/4/303.4.2 3.4.2 修改數(shù)據(jù)修改數(shù)據(jù)v語句格式語句格式 UPDATE SET =,= WHERE ;v功能功能n修改指定表中滿足修改指定表中滿足WHERE子句條件的元組子句條件的元組2022/4/30修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)(續(xù))nSET子句指定子句指定修改方式(修改方式(3種)種)修改某一個元組的值修改某一個元組的值修改多個元組的值修改多個元組的值帶子查詢的修改語句帶子查詢的修改語句要修改的列要修
8、改的列修改后取值修改后取值nWHERE子句指定子句指定要修改的元組要修改的元組缺省表示要修改表中的所有元組缺省表示要修改表中的所有元組2022/4/301. 修改某一個元組的值修改某一個元組的值例例5 將學(xué)生將學(xué)生0903121的年齡改為的年齡改為22歲歲 UPDATE Student SET Sage=22 WHERE Sno= 0903121 ; 2022/4/302. 修改多個元組的值修改多個元組的值例例6 將所有學(xué)生的年齡增加將所有學(xué)生的年齡增加1歲歲 UPDATE Student SET Sage= Sage+1;2022/4/303. 帶子查詢的修改語句帶子查詢的修改語句例例7 將
9、計算機科學(xué)系全體學(xué)生的成績置零。將計算機科學(xué)系全體學(xué)生的成績置零。 UPDATE SC SET Grade=0 WHERE CS= (SELECT Sdept FROM Student WHERE Student.Sno = SC.Sno);或:或:UPDATE SC SET Grade=0 WHERE SC.Sno IN (SELECT Sno FROM Student WHERE Sdept =CS );2022/4/30修改數(shù)據(jù)(續(xù))修改數(shù)據(jù)(續(xù))RDBMS在執(zhí)行修改語句時會檢查修改操作是否破在執(zhí)行修改語句時會檢查修改操作是否破壞表上已定義的壞表上已定義的完整性規(guī)則完整性規(guī)則n實體完整性
10、實體完整性n主碼不允許修改主碼不允許修改n用戶定義的完整性用戶定義的完整性 NOT NULL約束約束 UNIQUE約束約束 值域約束值域約束2022/4/303.4 3.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ù) 2022/4/303.4.3 3.4.3 刪除數(shù)據(jù)刪除數(shù)據(jù)v語句格式語句格式 DELETE FROM WHERE ;v功能功能n刪除指定表中滿足刪除指定表中滿足WHERE子句條件的元組子句條件的元組vWHERE子句子句n指定要刪除的元組指定要刪除的元組n缺省表示要刪除表中的全部元組,表的定義仍在字典中缺省表示要刪除
11、表中的全部元組,表的定義仍在字典中2022/4/30刪除數(shù)據(jù)(續(xù))刪除數(shù)據(jù)(續(xù))v三種刪除方式三種刪除方式:1. 刪除某一個元組的值刪除某一個元組的值2. 刪除多個元組的值刪除多個元組的值3. 帶子查詢的刪除語句帶子查詢的刪除語句2022/4/301. 刪除某一個元組的值刪除某一個元組的值例例8 刪除學(xué)號為刪除學(xué)號為0903128的學(xué)生記錄。的學(xué)生記錄。 DELETE FROM Student WHERE Sno=0903128 ;2022/4/302. 刪除多個元組的值刪除多個元組的值例例9 刪除所有的學(xué)生選課記錄。刪除所有的學(xué)生選課記錄。 DELETE FROM SC;2022/4/303
12、. 帶子查詢的刪除語句帶子查詢的刪除語句例例10 刪除計算機科學(xué)系所有學(xué)生的選課記錄。刪除計算機科學(xué)系所有學(xué)生的選課記錄。 DELETE FROM SC WHERE CS= (SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno);2022/4/30刪除數(shù)據(jù)刪除數(shù)據(jù)(續(xù)續(xù))DBMS在執(zhí)行刪除語句時會檢查所刪除元組是否破在執(zhí)行刪除語句時會檢查所刪除元組是否破壞表上已定義的完整性規(guī)則,參照完整性,若破壞表上已定義的完整性規(guī)則,參照完整性,若破壞,則壞,則不允許刪除不允許刪除級聯(lián)刪除級聯(lián)刪除2022/4/30第三章第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫標(biāo)
13、準(zhǔn)語言SQL2022/4/303.5 3.5 視視 圖圖視圖的特點視圖的特點v虛表虛表,是從一個或幾個基本表(或視圖)導(dǎo)出的,是從一個或幾個基本表(或視圖)導(dǎo)出的表表v數(shù)據(jù)庫中只存放數(shù)據(jù)庫中只存放視圖的定義視圖的定義,不存放視圖對應(yīng)的,不存放視圖對應(yīng)的數(shù)據(jù)數(shù)據(jù)v基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變也隨之改變2022/4/303.5 3.5 視視 圖圖基于視圖的操作基于視圖的操作v 查詢查詢v 刪除刪除v 受限更新受限更新v 定義基于該視圖的新視圖定義基于該視圖的新視圖2022/4/303.5 3.5 視視 圖圖3.5.1 定義視圖定義視
14、圖3.5.2 查詢視圖查詢視圖3.5.3 更新視圖更新視圖3.5.4 視圖的作用視圖的作用2022/4/303.5.1 3.5.1 定義視圖定義視圖v建立視圖建立視圖v刪除視圖刪除視圖2022/4/30一、建立視圖一、建立視圖v語句格式語句格式 CREATE VIEW ( ,) AS WITH CHECK OPTION;v組成視圖的屬性列名:全部省略或全部指定組成視圖的屬性列名:全部省略或全部指定v子查詢不允許含有子查詢不允許含有ORDER BY子句和子句和DISTINCT短語短語2022/4/30組成視圖的屬性列名組成視圖的屬性列名屬性列名可全部省略屬性列名可全部省略或或全部指定全部指定M全
15、部省略全部省略: 由子查詢中由子查詢中SELECT目標(biāo)列中的諸字段組成目標(biāo)列中的諸字段組成M全部指定所有列名的情況全部指定所有列名的情況:(1) 某個目標(biāo)列是集函數(shù)或列表達(dá)式某個目標(biāo)列是集函數(shù)或列表達(dá)式(2) 多表連接時選出了幾個同名列作為視圖的字段多表連接時選出了幾個同名列作為視圖的字段(3) 需要在視圖中為某個列啟用新的更合適的名字需要在視圖中為某個列啟用新的更合適的名字2022/4/30 建立視圖(續(xù))建立視圖(續(xù))vRDBMS執(zhí)行執(zhí)行CREATE VIEW語句時語句時只是把只是把視圖視圖定義定義存入數(shù)據(jù)字典存入數(shù)據(jù)字典,并不執(zhí)行其中的,并不執(zhí)行其中的SELECT語語句。句。v在對視圖查
16、詢時,按視圖的定義從基本表中將數(shù)在對視圖查詢時,按視圖的定義從基本表中將數(shù)據(jù)查出。據(jù)查出。2022/4/30建立視圖(續(xù))建立視圖(續(xù)) 例例1 建立信息系學(xué)生的視圖。建立信息系學(xué)生的視圖。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;2022/4/30建立視圖(續(xù))建立視圖(續(xù))例例2建立信息系學(xué)生的視圖,并要求進(jìn)行修改和插建立信息系學(xué)生的視圖,并要求進(jìn)行修改和插入操作時仍需保證該視圖只有信息系的學(xué)生入操作時仍需保證該視圖只有信息系的學(xué)生 。 CREATE VIEW IS_Stude
17、nt AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS WITH CHECK OPTION;2022/4/30建立視圖(續(xù))建立視圖(續(xù))對對IS_Student視圖的更新操作:視圖的更新操作:v修改操作:自動加上修改操作:自動加上Sdept= IS的條件的條件v刪除操作:自動加上刪除操作:自動加上Sdept= IS的條件的條件v插入操作:自動檢查插入操作:自動檢查Sdept屬性值是否為屬性值是否為IS M如果不是,則拒絕該插入操作如果不是,則拒絕該插入操作M如果沒有提供如果沒有提供Sdept屬性值,則自動定義屬性值,則自動定義Sdep
18、t為為IS2022/4/30建立視圖(續(xù))建立視圖(續(xù))v基于多個基表的視圖基于多個基表的視圖例例3 建立信息系選修了建立信息系選修了1號課程的學(xué)生視圖。號課程的學(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;2022/4/30建立視圖(續(xù))建立視圖(續(xù))v基于視圖的視圖基于視圖的視圖例例4 建立信息系選修了建立信息系選修了1號課程且成績在號課程且成績在90
19、分以分以上的學(xué)生的視圖。上的學(xué)生的視圖。 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade=90;2022/4/30建立視圖(續(xù))建立視圖(續(xù))v帶表達(dá)式的視圖帶表達(dá)式的視圖例例5 定義一個反映學(xué)生出生年份的視圖。定義一個反映學(xué)生出生年份的視圖。 CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2012-Sage FROM Student;2022/4/30建立視圖(續(xù))建立視圖(續(xù))v分組視圖分組視圖例例6 將學(xué)生的學(xué)號及他的平均成績定義為一個視圖
20、將學(xué)生的學(xué)號及他的平均成績定義為一個視圖(假設(shè)(假設(shè)SC表中表中“成績成績”列列Grade為數(shù)字型)。為數(shù)字型)。 CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;2022/4/30 建立視圖(續(xù))建立視圖(續(xù))v不指定屬性列不指定屬性列例例7將將Student表中所有女生記錄定義為一個視圖表中所有女生記錄定義為一個視圖CREATE VIEW F_Student(F_Sno, name, sex, age, dept)ASSELECT *FROM StudentWHERE Ssex=女女;缺點:缺點:
21、以以 SELECT * 方式創(chuàng)建的視圖方式創(chuàng)建的視圖可擴充性差可擴充性差,應(yīng)盡可能避免。,應(yīng)盡可能避免。原因:原因:修改基表修改基表Student的結(jié)構(gòu)后,的結(jié)構(gòu)后,Student表與表與F_Student視圖視圖的映象關(guān)系被破壞,導(dǎo)致該視圖不能正確工作。的映象關(guān)系被破壞,導(dǎo)致該視圖不能正確工作。2022/4/30 建立視圖(續(xù))建立視圖(續(xù))CREATE VIEW F_Student2 (stdnum, name, sex, age, dept)ASSELECT Sno,Sname,Ssex,Sage,SdeptFROM StudentWHERE Ssex=女女;為基表為基表Student增
22、加屬性列不會破壞增加屬性列不會破壞Student表與表與F_Student2視圖的映象關(guān)系。視圖的映象關(guān)系。2022/4/30二、刪除視圖二、刪除視圖v語句的格式:語句的格式:DROP VIEW ;M該語句從該語句從數(shù)據(jù)字典數(shù)據(jù)字典中刪除指定的中刪除指定的視圖定義視圖定義M如果該視圖上還導(dǎo)出了其他視圖,使用如果該視圖上還導(dǎo)出了其他視圖,使用CASCADE級聯(lián)刪除語句,把該視圖和由它級聯(lián)刪除語句,把該視圖和由它導(dǎo)出的所有視圖一起刪除導(dǎo)出的所有視圖一起刪除 M刪除刪除基表基表時,由該基表導(dǎo)出的時,由該基表導(dǎo)出的所有視圖定義所有視圖定義都必須顯式地使用都必須顯式地使用DROP VIEW語句刪除語句刪
23、除 2022/4/30刪除視圖刪除視圖(續(xù))續(xù))例例8 刪除視圖刪除視圖BT_S: DROP VIEW BT_S; 刪除視圖刪除視圖IS_S1:DROP VIEW IS_S1;級聯(lián)刪除:級聯(lián)刪除: DROP VIEW IS_S1 CASCADE; 2022/4/303.5 3.5 視視 圖圖3.5.1 定義視圖定義視圖3.5.2 查詢視圖查詢視圖3.5.3 更新視圖更新視圖3.5.4 視圖的作用視圖的作用2022/4/303.5.2 3.5.2 查詢視圖查詢視圖v 用戶角度:查詢視圖與查詢基本表相同用戶角度:查詢視圖與查詢基本表相同v RDBMS實現(xiàn)視圖查詢的方法實現(xiàn)視圖查詢的方法M通過視圖消
24、解法(通過視圖消解法(View Resolution)完成)完成進(jìn)行有效性檢查,檢查所查詢的視圖是否存在進(jìn)行有效性檢查,檢查所查詢的視圖是否存在若視圖存在,將其定義中的子查詢和用戶查詢結(jié)若視圖存在,將其定義中的子查詢和用戶查詢結(jié)合起來,轉(zhuǎn)換成合起來,轉(zhuǎn)換成等價的對基本表的查詢等價的對基本表的查詢執(zhí)行執(zhí)行修正修正后的查詢后的查詢2022/4/30查詢視圖(續(xù))查詢視圖(續(xù))例例9 在信息系學(xué)生的視圖中找出年齡小于在信息系學(xué)生的視圖中找出年齡小于20歲的學(xué)生。歲的學(xué)生。 SELECT Sno,Sage FROM IS_Student WHERE Sage20;IS_Student視圖的定義視圖的定
25、義 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;2022/4/30查詢視圖(續(xù))查詢視圖(續(xù))視圖消解轉(zhuǎn)換后的查詢語句為:視圖消解轉(zhuǎn)換后的查詢語句為: SELECT Sno,Sage FROM Student WHERE Sdept= IS AND Sage=90; S_G視圖的子查詢定義:視圖的子查詢定義: CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;2022/4/30查詢轉(zhuǎn)換查詢轉(zhuǎn)換將
26、查詢語句與將查詢語句與S_G視圖的定義相結(jié)合:視圖的定義相結(jié)合:SELECT Sno,AVG(Grade)FROM SCWHERE AVG(Grade)=90GROUP BY Sno;因因WHERE子句不可用聚集函數(shù),這種轉(zhuǎn)換不合理,出子句不可用聚集函數(shù),這種轉(zhuǎn)換不合理,出現(xiàn)語法錯誤現(xiàn)語法錯誤正確:正確:SELECT Sno,AVG(Grade)FROM SCGROUP BY SnoHAVING AVG(Grade)=90;2022/4/303.5 3.5 視視 圖圖3.5.1 定義視圖定義視圖3.5.2 查詢視圖查詢視圖3.5.3 更新視圖更新視圖3.5.4 視圖的作用視圖的作用2022/4
27、/303.5.3 3.5.3 更新視圖更新視圖v用戶角度:更新視圖與更新基本表相同用戶角度:更新視圖與更新基本表相同vDBMS實現(xiàn)視圖更新的方法實現(xiàn)視圖更新的方法視圖消解法,轉(zhuǎn)換為對視圖消解法,轉(zhuǎn)換為對基本表基本表的操作的操作v指定指定WITH CHECK OPTION子句后子句后 DBMS在更新視圖時會進(jìn)行檢查,防止用戶通過在更新視圖時會進(jìn)行檢查,防止用戶通過視圖對視圖對不屬于視圖范圍內(nèi)不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進(jìn)行更新的基本表數(shù)據(jù)進(jìn)行更新2022/4/30更新視圖(續(xù))更新視圖(續(xù))例例12 將信息系學(xué)生將信息系學(xué)生視圖視圖IS_Student中學(xué)號中學(xué)號0903122的學(xué)生姓名改為的學(xué)
28、生姓名改為“劉辰劉辰”。UPDATE IS_StudentSET Sname= 劉辰劉辰WHERE Sno= 0903122 ;轉(zhuǎn)換后的語句:轉(zhuǎn)換后的語句:UPDATE StudentSET Sname= 劉辰劉辰WHERE Sno= 0903122 AND Sdept= IS;2022/4/30更新視圖(續(xù))更新視圖(續(xù))例例13 向信息系學(xué)生向信息系學(xué)生視圖視圖IS_Student中插入一個中插入一個新的學(xué)生記錄:新的學(xué)生記錄:95029,趙新,趙新,20歲歲INSERTINTO IS_StudentVALUES(95029,趙新趙新,20);轉(zhuǎn)換為對基本表的更新:轉(zhuǎn)換為對基本表的更新:I
29、NSERTINTO Student(Sno,Sname,Sage,Sdept)VALUES(95029 ,趙新趙新,20,IS );2022/4/30更新視圖(續(xù))更新視圖(續(xù))例例14刪除信息系學(xué)生視圖刪除信息系學(xué)生視圖IS_Student中學(xué)號為中學(xué)號為0903129的記錄的記錄 DELETEFROM IS_StudentWHERE Sno= 0903129 ;轉(zhuǎn)換為對基本表的更新:轉(zhuǎn)換為對基本表的更新:DELETEFROM StudentWHERE Sno= 0903129 AND Sdept= IS;2022/4/30注:注:IS_Student視圖的定義視圖的定義CREATE VIE
30、W IS_StudentAS SELECT Sno,Sname,SageFROM StudentWHERE Sdept= ISWITH CHECK OPTION;更新視圖(續(xù))更新視圖(續(xù))v 更新視圖的限制:更新視圖的限制:一些視圖是不可更新的一些視圖是不可更新的,因為對這些視,因為對這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新例:視圖例:視圖S_G為不可更新視圖。為不可更新視圖。UPDATE S_GSET Gavg=90WHERE Sno= 0903121;這個對視圖的更新無法轉(zhuǎn)換成對基本表這個對視圖的更新無法轉(zhuǎn)換成對基本表SC
31、的更新的更新2022/4/30注:視圖注:視圖S_G的定義的定義CREATE VIEW S_G (Sno,Gavg)AS SELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;更新視圖(續(xù))更新視圖(續(xù))v允許對允許對行列子集視圖行列子集視圖進(jìn)行更新進(jìn)行更新M從單個基本表導(dǎo)出,只是去掉了基本表的某些從單個基本表導(dǎo)出,只是去掉了基本表的某些行和列,且保留了主碼的視圖。行和列,且保留了主碼的視圖。v對其它類型視圖的更新不同數(shù)據(jù)庫系統(tǒng)有對其它類型視圖的更新不同數(shù)據(jù)庫系統(tǒng)有不同限制不同限制2022/4/303.5 3.5 視視 圖圖3.5.1 定義視圖定義視圖3.5.2 查
32、詢視圖查詢視圖3.5.3 更新視圖更新視圖3.5.4 視圖的作用視圖的作用2022/4/301. 視圖能夠視圖能夠簡化簡化用戶的操作用戶的操作 當(dāng)視圖中數(shù)據(jù)不是直接來自基本表時,定義視圖能夠簡化當(dāng)視圖中數(shù)據(jù)不是直接來自基本表時,定義視圖能夠簡化用戶的操作用戶的操作v 基于多張表連接形成的視圖基于多張表連接形成的視圖v 基于復(fù)雜嵌套查詢的視圖基于復(fù)雜嵌套查詢的視圖2022/4/303.5.4 3.5.4 視圖的作用視圖的作用2. 視圖使用戶能以視圖使用戶能以多種角度多種角度看待同一數(shù)據(jù)看待同一數(shù)據(jù) 視圖機制能使視圖機制能使不同用戶不同用戶以以不同方式不同方式看待同一數(shù)據(jù),適應(yīng)看待同一數(shù)據(jù),適應(yīng)數(shù)
33、據(jù)庫共享的需要數(shù)據(jù)庫共享的需要3.視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性例:假設(shè)數(shù)據(jù)庫邏輯結(jié)構(gòu)發(fā)生改變例:假設(shè)數(shù)據(jù)庫邏輯結(jié)構(gòu)發(fā)生改變學(xué)生關(guān)系學(xué)生關(guān)系Student(Sno,Sname,Ssex,Sage,Sdept) “垂直垂直”地地分成兩個基本表分成兩個基本表: SX(Sno,Sname,Sage) SY(Sno,Ssex,Sdept)2022/4/303.視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性(續(xù)續(xù))通過建立一個視圖通過建立一個視圖Student:CREATE VIEW Student(Sno,Sn
34、ame,Ssex,Sage,Sdept)AS SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.SdeptFROM SX,SYWHERE SX.Sno=SY.Sno;使用戶的外模式保持不變,從而對原使用戶的外模式保持不變,從而對原Student表的表的查詢程序不查詢程序不必修改。必修改。3.視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性(續(xù)續(xù))v 視圖視圖只能在一定程度上只能在一定程度上提供數(shù)據(jù)的提供數(shù)據(jù)的邏輯獨立性邏輯獨立性M由于對視圖的更新是有條件的,因此應(yīng)用程序中修改數(shù)據(jù)的語句由于對視圖的更新是有條件的,因此應(yīng)用程序
35、中修改數(shù)據(jù)的語句可能仍會因可能仍會因基本表結(jié)構(gòu)的改變基本表結(jié)構(gòu)的改變而改變。而改變。2022/4/304. 視圖能夠?qū)C密數(shù)據(jù)提供安全保護(hù)視圖能夠?qū)C密數(shù)據(jù)提供安全保護(hù) 對不同用戶定義不同視圖,使每個用戶只能看到他有權(quán)看到對不同用戶定義不同視圖,使每個用戶只能看到他有權(quán)看到的數(shù)據(jù)的數(shù)據(jù)第三章第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL2022/4/303.6 3.6 數(shù)據(jù)控制數(shù)據(jù)控制v概述概述v3.6.1 授權(quán)授權(quán)v3.6.2 收回權(quán)限收回權(quán)限v小結(jié)小結(jié)2022/4/30概述概述數(shù)據(jù)庫系統(tǒng)的特點之一,由數(shù)據(jù)庫系統(tǒng)的特點之一,由DBMSDBMS提供統(tǒng)一的提供統(tǒng)一的數(shù)據(jù)控制功能,包括:數(shù)據(jù)控
36、制功能,包括:M安全性控制安全性控制M完整性控制完整性控制M并發(fā)控制并發(fā)控制M數(shù)據(jù)庫的恢復(fù)數(shù)據(jù)庫的恢復(fù)2022/4/30 安全性安全性v安全性安全性:保護(hù)數(shù)據(jù)庫,防止不合法的使用所造成的數(shù):保護(hù)數(shù)據(jù)庫,防止不合法的使用所造成的數(shù)據(jù)泄露和破壞。據(jù)泄露和破壞。v保證數(shù)據(jù)安全性的主要措施保證數(shù)據(jù)安全性的主要措施M存取控制:控制用戶只能存取他有權(quán)存取的存取控制:控制用戶只能存取他有權(quán)存取的數(shù)據(jù)數(shù)據(jù)M規(guī)定不同用戶對于規(guī)定不同用戶對于不同數(shù)據(jù)對象不同數(shù)據(jù)對象所允許執(zhí)行的所允許執(zhí)行的操作操作2022/4/30DBMS實現(xiàn)數(shù)據(jù)安全性保護(hù)的過程實現(xiàn)數(shù)據(jù)安全性保護(hù)的過程1. 用戶或用戶或DBA把授權(quán)決定告知系統(tǒng)把
37、授權(quán)決定告知系統(tǒng)2. GRANT和和REVOKE3. DBMS把授權(quán)的結(jié)果存入數(shù)據(jù)字典把授權(quán)的結(jié)果存入數(shù)據(jù)字典4. 當(dāng)用戶提出操作請求時,當(dāng)用戶提出操作請求時,DBMS根據(jù)根據(jù)授權(quán)定義授權(quán)定義進(jìn)行檢查,以決定是否執(zhí)行操作請求進(jìn)行檢查,以決定是否執(zhí)行操作請求2022/4/303.6.1 3.6.1 授授 權(quán)權(quán)vGRANT語句的一般格式:語句的一般格式:GRANT ,. ON TO ,.WITH GRANT OPTION;vGRANT功能:將功能:將指定操作對象指定操作對象的的指定操作權(quán)限指定操作權(quán)限授授予予指定的用戶指定的用戶。2022/4/30(1) 操作權(quán)限操作權(quán)限 對象 對象類型 操 作
38、權(quán) 限 屬性列 TABLE SELECT,INSERT,UPDATE, DELETE,ALL RIVIEGES 視圖 TABLE SELECT,INSERT,UPDATE, DELETE,ALL RIVIEGES 基本表 TABLE SELECT,INSERT,UPDATE, DELETE, ALTER, INDEX, ALL PRIVIEGES 數(shù)據(jù)庫 DATABASE CREATETAB 2022/4/30(2) 用戶的權(quán)限用戶的權(quán)限v建表(建表(CREATETAB)的權(quán)限的權(quán)限:屬于屬于DBAvDBA授予授予-普通用戶普通用戶v基本表或視圖的基本表或視圖的屬主屬主擁有對該表或視圖的一切擁
39、有對該表或視圖的一切操作權(quán)限操作權(quán)限v接受權(quán)限的用戶接受權(quán)限的用戶:M一個或多個具體用戶一個或多個具體用戶MPUBLIC(全體用戶)(全體用戶)2022/4/30(4) WITH GRANT OPTION子句子句v指定了指定了WITH GRANT OPTION子句子句: 獲得某種權(quán)限的用戶還可以把這種權(quán)限獲得某種權(quán)限的用戶還可以把這種權(quán)限再授予再授予別別的用戶。的用戶。v沒有指定沒有指定WITH GRANT OPTION子句子句: 獲得某種權(quán)限的用戶只能使用該權(quán)限,獲得某種權(quán)限的用戶只能使用該權(quán)限,不能傳播不能傳播該權(quán)限該權(quán)限v不允許循環(huán)授權(quán)不允許循環(huán)授權(quán)2022/4/30例題例題 例例1 把
40、查詢把查詢Student表的權(quán)限授給用戶表的權(quán)限授給用戶U1 GRANT SELECT ON TABLE Student TO U1;2022/4/30例題(續(xù))例題(續(xù))例例2 把對把對Student表和表和Course表的全部權(quán)表的全部權(quán)限授予用戶限授予用戶U2和和U3 GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;2022/4/30例題(續(xù))例題(續(xù))例例3 把對表把對表SC的查詢權(quán)限授予所有用戶的查詢權(quán)限授予所有用戶 GRANT SELECT ON TABLE SC TO PUBLIC;2022/4/30例題(續(xù))例題(續(xù))例例4 把查詢把查詢Student表和修改學(xué)生學(xué)號的權(quán)表和修改學(xué)生學(xué)號的權(quán)限授給用戶限授給用戶U4 GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;2022/4/30例題(續(xù))例題(續(xù)) 例例5 把對表把對表SC的的INSERT權(quán)限授予權(quán)限授予U5用用戶,并戶,并允許他
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 戲劇演出市場細(xì)分-深度研究
- 度假村產(chǎn)業(yè)鏈優(yōu)化升級-深度研究
- 數(shù)據(jù)安全態(tài)勢感知-深度研究
- 2025年廣西國際商務(wù)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年廣安職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 產(chǎn)業(yè)協(xié)同發(fā)展策略-深度研究
- 2025年廣東工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年度拆除工程施工人員培訓(xùn)合同模板4篇
- 2025年山西青年職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點試題含答案解析
- 2025年度食品加工廠蟲鼠害控制與食品安全保障合同4篇
- 洗浴部前臺收銀員崗位職責(zé)
- 2024年輔警考試公基常識300題(附解析)
- GB/T 43650-2024野生動物及其制品DNA物種鑒定技術(shù)規(guī)程
- 暴發(fā)性心肌炎查房
- 口腔醫(yī)學(xué)中的人工智能應(yīng)用培訓(xùn)課件
- 工程質(zhì)保金返還審批單
- 【可行性報告】2023年電動自行車項目可行性研究分析報告
- 五月天歌詞全集
- 商品退換貨申請表模板
- 實習(xí)單位鑒定表(模板)
- 數(shù)字媒體應(yīng)用技術(shù)專業(yè)調(diào)研方案
評論
0/150
提交評論