版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言續(xù)第1頁,課件共40頁,創(chuàng)作于2023年2月2視圖:從一個(gè)或幾個(gè)基本表(或視圖)導(dǎo)出的表。一、建立視圖的優(yōu)點(diǎn)
1、簡化用戶的操作
2、靈活
3、提供一定程度的邏輯獨(dú)立性
4、提供安全保護(hù)第六節(jié)視圖第2頁,課件共40頁,創(chuàng)作于2023年2月3二、定義視圖1、建立視圖
CREATEVIEW<視圖名>[(<列名>[,<列名>]…)]AS<子查詢>[WITHCHECKOPTION];2、刪除視圖
DROPVIEW<視圖名>三、查詢視圖(同表查詢一樣)四、更新視圖(同表更新一樣)第3頁,課件共40頁,創(chuàng)作于2023年2月4如果CREATEVIEW語句僅指定了視圖名,省略了組成視圖的各個(gè)屬性列名,則隱含該視圖由子查詢中SELECT子句目標(biāo)列中的諸字段組成。在下列三種情況下必須明確指定組成視圖的所有列名:其中某個(gè)目標(biāo)列不是單純的屬性名,而是集函數(shù)或列表達(dá)式多表連接時(shí)選出了幾個(gè)同名列作為視圖的字段需要在視圖中為某個(gè)列啟用新的更合適的名稱第4頁,課件共40頁,創(chuàng)作于2023年2月5例1建立信息系學(xué)生的視圖。
CREATEVIEWIS_Student
AS
SELECTSno,Sname,age
FROMS
WHEREdept='IS';
行列子集視圖:視圖是從單個(gè)基本表導(dǎo)出的,并且只是去掉了基本表的某些行和某些列,但保留了碼。第5頁,課件共40頁,創(chuàng)作于2023年2月6例2建立信息系學(xué)生的視圖,并要求進(jìn)行修改和插入操作時(shí)仍須保證該視圖只有信息系的學(xué)生
CREATEVIEWIS_Student
AS
SELECTSno,Sname,age
FROMS
WHEREdept='IS'
WITHCHECKOPTION;第6頁,課件共40頁,創(chuàng)作于2023年2月7視圖不僅可以建立在單個(gè)基本表上,也可以建立在多個(gè)基本表上。例3建立信息系選修了1號(hào)課程的學(xué)生的視圖
CREATEVIEWIS_S1(Sno,Sname,Grade)
AS
SELECTS.Sno,Sname,Grade
FROMS,SC
WHEREdept='IS' AND
S.Sno=SC.Sno AND
SC.Cno='1';第7頁,課件共40頁,創(chuàng)作于2023年2月8
視圖不僅可以建立在一個(gè)或多個(gè)基本表上也可以建立在一個(gè)或多個(gè)已定義好的視圖上,或同時(shí)建立在基本表與視圖上。例4建立信息系選修了1號(hào)課程且成績?cè)?0分以上的學(xué)生的視圖CREATEVIEWIS_S2
AS
SELECTSno,Sname,Grade
FROMIS_S1
WHEREGrade>=90;第8頁,課件共40頁,創(chuàng)作于2023年2月9定義基本表時(shí),為了減少數(shù)據(jù)庫中的冗余數(shù)據(jù),表中只存放基本數(shù)據(jù),由基本數(shù)據(jù)經(jīng)過各種計(jì)算派生出的數(shù)據(jù)一般是不存儲(chǔ)的。但由于視圖中的數(shù)據(jù)并不實(shí)際存儲(chǔ),所以定義視圖時(shí)可以根據(jù)應(yīng)用的需要,設(shè)置一些派生屬性列。這些派生屬性由于在基本表中并不實(shí)際存在,所以有時(shí)也稱他們?yōu)樘摂M列。帶虛擬列的視圖我們稱為帶表達(dá)式的視圖。第9頁,課件共40頁,創(chuàng)作于2023年2月10例5定義一個(gè)反映學(xué)生出生年份的視圖
CREATEVIEWBT_S(Sno,Sname,Sbirth)
AS SELECTSno,Sname,2010-age
FROMS;帶表達(dá)式的視圖第10頁,課件共40頁,創(chuàng)作于2023年2月11還可以用帶有集函數(shù)和GROUPBY子句的查詢來定義視圖。這種視圖稱為分組視圖。例6將學(xué)生的學(xué)號(hào)及他的平均成績定義為一個(gè)視圖
CREATVIEWS_G(Sno,Gavg)
AS SELECTSno,AVG(Grade)
FROMSC
GROUPBYSno;第11頁,課件共40頁,創(chuàng)作于2023年2月12例7將S表中所有女生記錄定義為一個(gè)視圖CREATEVIEWF_Student(stdnum,name,sex,age,dept)
AS SELECT*
FROMS
WHEREsex=‘女’;這里視圖F_Student是由子查詢“SELECT*"建立的。由于該視圖一旦建立后,S表就構(gòu)成了視圖定義的一部分,如果以后修改了基本表S的結(jié)構(gòu),則S表與F_Student視圖的映像關(guān)系受到破壞,因而該視圖就不能正確工作了。為避免出現(xiàn)這類問題,可以采用下列兩種方法:第12頁,課件共40頁,創(chuàng)作于2023年2月13建立視圖時(shí)明確指明屬性列名,而不是簡單地用SELECT*。即:
CREATEVIEWF_Student(stdnum,name,sex,age,dept)
AS SELECTSno,Sname,sex,age,dept
FROMS
WHERESsex=‘女’;在修改基本表之后刪除原來的視圖,然后重建視圖。這是最保險(xiǎn)的方法。
第13頁,課件共40頁,創(chuàng)作于2023年2月142、刪除視圖語句的格式為:
DROPVIEW<視圖名>;
一個(gè)視圖被刪除后,由此視圖導(dǎo)出的其他視圖也將失效,用戶應(yīng)該使用DROPVIEW語句將他們一一刪除。第14頁,課件共40頁,創(chuàng)作于2023年2月15例8刪除視圖IS_S1 DROPVIEWIS_S1;執(zhí)行此語句后,IS_S1視圖的定義將從數(shù)據(jù)字典中刪除。由IS_S1視圖導(dǎo)出的IS_S2視圖的定義雖仍在數(shù)據(jù)字典中,但該視圖已無法使用了,因此應(yīng)該同時(shí)刪除。第15頁,課件共40頁,創(chuàng)作于2023年2月16三、查詢視圖DBMS執(zhí)行對(duì)視圖的查詢時(shí),首先進(jìn)行有效性檢查,檢查查詢涉及的表、視圖等是否在數(shù)據(jù)庫中存在,如果存在,則從數(shù)據(jù)字典中取出查詢涉及的視圖的定義,把定義中的子查詢和用戶對(duì)視圖的查詢結(jié)合起來,轉(zhuǎn)換成對(duì)基本表的查詢,然后再執(zhí)行這個(gè)經(jīng)過修正的查詢。將對(duì)視圖的查詢轉(zhuǎn)換為對(duì)基本表的查詢的過程稱為視圖的消解(ViewResolution)。第16頁,課件共40頁,創(chuàng)作于2023年2月17例1在信息系學(xué)生的視圖中找出年齡小于20歲的學(xué)生
SELECTSno,age
FROMIS_Student
WHEREage<20;DBMS執(zhí)行此查詢時(shí),將其與IS_Student視圖定義中的子查詢
SELECTSno,Sname,age
FROMS
WHEREdept="IS";
結(jié)合起來,轉(zhuǎn)換成對(duì)基本表S的查詢,修正后的查詢語句為
第17頁,課件共40頁,創(chuàng)作于2023年2月18SELECTSno,Sage
FROMStudent
WHERESdept="IS"ANDSage<20;
第18頁,課件共40頁,創(chuàng)作于2023年2月19
視圖是定義在基本上的虛表,它可以和其他基本表一起使用,實(shí)現(xiàn)連接查詢或嵌套查詢。這也就是說,在關(guān)系數(shù)據(jù)庫的三級(jí)模式結(jié)構(gòu)中,外模式不僅包括視圖,而且還可以包括一些基本表。第19頁,課件共40頁,創(chuàng)作于2023年2月20例2查詢信息系選修了1號(hào)課程的學(xué)生
SELECTSno,Sname
FROMIS_Student,SC
WHEREIS_Student.Sno=SC.SnoAND
SC.Cno=‘1’;
本查詢涉及虛表IS_Student和基本表SC,通過這兩個(gè)表的連接來完成用戶請(qǐng)求。第20頁,課件共40頁,創(chuàng)作于2023年2月21在一般情況下,視圖查詢的轉(zhuǎn)換是直截了當(dāng)?shù)?。但有些情況下,這種轉(zhuǎn)換不能直接進(jìn)行,查詢時(shí)就會(huì)出問題在S_G視圖中查詢平均成績?cè)?0分以上的學(xué)生學(xué)號(hào)和平均成績Select*fromS_Gwheregavg>=90S_G的定義為Selectsno,avg(grade)froms_cgroupbysno該轉(zhuǎn)換后得到:第21頁,課件共40頁,創(chuàng)作于2023年2月22該查詢轉(zhuǎn)換后得到SELECTSNO,AVG(GRADE)FROMS_CWHEREAVG(GRADE)>=90這是錯(cuò)誤的?。。≌_的查詢應(yīng)該是SELECTSNO,AVG(GRADE)FROMS_CGROUPBYSNOHAVINGAVG(GRADE)>=90此類查詢應(yīng)該直接對(duì)表進(jìn)行!第22頁,課件共40頁,創(chuàng)作于2023年2月23四、更新視圖更新視圖包括插入(INSERT)、刪除(DELETE)和修改(UPDATE)三類操作。由于視圖是不實(shí)際存儲(chǔ)數(shù)據(jù)的虛表,因此對(duì)視圖的更新,最終要轉(zhuǎn)換為對(duì)基本表的更新。為防止用戶通過視圖對(duì)數(shù)據(jù)進(jìn)行增刪改時(shí),無意或故意操作不屬于視圖范圍內(nèi)的基本表數(shù)據(jù),可在定義視圖時(shí)加上WITHCHECKOPTION子句,這樣在視圖上增刪改數(shù)據(jù)時(shí),DBMS會(huì)進(jìn)一步檢查視圖定義中的條件,若不滿足條件,則拒絕執(zhí)行該操作。第23頁,課件共40頁,創(chuàng)作于2023年2月24例1將信息系學(xué)生視圖IS_Student中學(xué)號(hào)為95002的學(xué)生姓名改為“劉辰”UPDATEIS_Student
SETSname='劉辰'
WHERESno='95002';
一般行列子集視圖都是可更新視圖第24頁,課件共40頁,創(chuàng)作于2023年2月25與查詢視圖類似,DBMS執(zhí)行此語句時(shí),首先進(jìn)行有效性檢查,檢查所涉及的表、視圖等是否在數(shù)據(jù)庫中存在如果存在,則從數(shù)據(jù)字典中取出該語句涉及的視圖的定義,把定義中的子查詢和用戶對(duì)視圖的更新操作結(jié)合起來,轉(zhuǎn)換成對(duì)基本表的更新執(zhí)行經(jīng)過修正的更新操作。轉(zhuǎn)換后的更新語句為:
UPDATESSETSname='劉辰'
WHERESno='95002'ANDdept='IS';
第25頁,課件共40頁,創(chuàng)作于2023年2月26例2向信息系學(xué)生視圖IS_S中插入一個(gè)新的學(xué)生記錄,其中學(xué)號(hào)為95029,姓名為趙新,年齡為20歲
INSERT
INTOIS_Student
VALUES('95029','趙新',20);
DBMS將其轉(zhuǎn)換為對(duì)基本表的更新:
INSERT
INTOS(Sno,Sname,age,dept)
VALUES('95029','趙新',20,'IS');
這里系統(tǒng)自動(dòng)將系名'IS'放入VALUES子句中。第26頁,課件共40頁,創(chuàng)作于2023年2月27例3刪除計(jì)算機(jī)系學(xué)生視圖CS_S中學(xué)號(hào)為95029的記錄
DELETE
FROMIS_Student
WHERESno='95029';
DBMS將其轉(zhuǎn)換為對(duì)基本表的更新:
DELETE
FROMS
WHERESno='95029'ANDdept='IS';
第27頁,課件共40頁,創(chuàng)作于2023年2月28更新的限制
在關(guān)系數(shù)據(jù)庫中,并不是所有的視圖都是可更新的,因?yàn)橛行┮晥D的更新不能唯一地有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更新。第28頁,課件共40頁,創(chuàng)作于2023年2月29DB2規(guī)定:1.若視圖是由兩個(gè)以上基本表導(dǎo)出的,則此視圖不允許更新。2.若視圖的字段來自字段表達(dá)式或常數(shù),則不允許對(duì)此視圖執(zhí)行INSERT和UPDATE操作,但允許執(zhí)行DELETE操作。3.若視圖的字段來自集函數(shù),則此視圖不允許更新。4.若視圖定義中含有GROUPBY子句,則此視圖不允許更新。5.若視圖定義中含有DISTINCT短語,則此視圖不允許更新。第29頁,課件共40頁,創(chuàng)作于2023年2月306.若視圖定義中有嵌套查詢,并且內(nèi)層查詢的FROM子句中涉及的表也是導(dǎo)出該視圖的基本表,則此視圖不允許更新。例如將成績?cè)谄骄煽冎系脑M定義成一個(gè)視圖GOOD_SC:
CREATEVIEWGOOD_SCASSELECTSno,Cno,GradeFROMSCWHEREGrade>(SELECTAVG(Grade)FROMSC);
導(dǎo)出視圖GOOD_SC的基本表是SC,內(nèi)層查詢中涉及的表也是SC,所以視圖GOOD_SC是不允許更新的。
7.一個(gè)不允許更新的視圖上定義的視圖也不允許更新。第30頁,課件共40頁,創(chuàng)作于2023年2月31視圖的優(yōu)點(diǎn)視圖能夠簡化用戶的操作視圖使用戶能以多種角度看待同一數(shù)據(jù)視圖對(duì)重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨(dú)立性視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)第31頁,課件共40頁,創(chuàng)作于2023年2月32數(shù)據(jù)控制
對(duì)象
對(duì)象類型
操作權(quán)限
屬性列
TABLE
SELECT,INSERT,UPDATE,DELETE,ALLPRIVILEGES
視圖
TABLE
SELECT,INSERT,UPDATE,DELETE,ALLPRIVILEGES
基本表
TABLE
SELECT,INSERT,UPDATE,DELETE,ALTER,INDEX,ALLPRIVILEGES
數(shù)據(jù)庫
DATABASE
CREATETABLE,ALTERTABLE
第32頁,課件共40頁,創(chuàng)作于2023年2月33一、授權(quán)GRANT<權(quán)限>[,<權(quán)限>]…[ON<對(duì)象類型><對(duì)象名>][TO<用戶>[,<用戶>]…[WITHGRANTOPTION];二、收回權(quán)限REVOKE<權(quán)限>[,<權(quán)限>]…[ON<對(duì)象類型><對(duì)象名>][FROM<用戶>[,<用戶>]…第33頁,課件共40頁,創(chuàng)作于2023年2月34例1把查詢S表權(quán)限授給用戶U1GRANTSELECTONTABLESTOU1;
例2把對(duì)S表和C表的全部權(quán)限授予用戶U2和U3GRANTALLPRIVILEGESONTABLES,CTOU2,U3;
例3把對(duì)表SC的查詢權(quán)限授予所有用戶
GRANTSELECTONTABLESCTOPUBLIC;
在sqlserver2000中不需要對(duì)象類型table只需對(duì)象名sc第34頁,課件共40頁,創(chuàng)作于2023年2月35例4把查詢S表和修改學(xué)生學(xué)號(hào)的權(quán)限授給用戶U4這里實(shí)際上要授予U4用戶的是對(duì)基本表S的SELECT權(quán)限和對(duì)屬性列Sno的UPDATE權(quán)限。授予關(guān)于屬性列的權(quán)限時(shí)必須明確指出相應(yīng)屬性列名。完成本授權(quán)操作的SQL語句為:
GRANTUPDATE(Sno),SELECTONTABLESTOU4;第35頁,課件共40頁,創(chuàng)作于2023年2月36例5把對(duì)表SC的INSERT權(quán)限授予U5用戶,并允許他再將此權(quán)限授予其他用戶
GRANTINSERTONTABLESCTOU5WITHGRANTOPTION;U5可以將此權(quán)限授予U6:
GRANTINSERTONTABLESCTOU6WITHGRANTOPTION;
同樣,U6還可以將此權(quán)限授予U7:
GRANTINSERTONTABLESCTOU7;第36頁,課件共40頁,創(chuàng)作于2023年2月37例6DBA把在數(shù)據(jù)庫S_C中建立表的權(quán)限授予用戶U8 GRANTCREATETABLEON
DATABASESTUTOU8;例7把用戶U4修改學(xué)生學(xué)號(hào)的權(quán)限收回
REVOKEUPD
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年雷波縣幼兒園教師招教考試備考題庫帶答案解析(必刷)
- 2025年隆堯縣幼兒園教師招教考試備考題庫帶答案解析(必刷)
- 2025年焦作新材料職業(yè)學(xué)院單招職業(yè)傾向性測試題庫帶答案解析
- 2025年中國勞動(dòng)關(guān)系學(xué)院馬克思主義基本原理概論期末考試模擬題帶答案解析(必刷)
- 2025年旬陽縣招教考試備考題庫帶答案解析
- 2025年青陽縣幼兒園教師招教考試備考題庫及答案解析(奪冠)
- 2025年沈陽職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫附答案解析
- 2024年淮濱縣幼兒園教師招教考試備考題庫附答案解析(奪冠)
- 2025年聶拉木縣幼兒園教師招教考試備考題庫及答案解析(必刷)
- 2025年安徽農(nóng)業(yè)大學(xué)馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2025-2026學(xué)年河北省保定市蓮池區(qū)九年級(jí)(上)期末化學(xué)試卷(含答案)
- 2026年廣州中考物理創(chuàng)新題型特訓(xùn)試卷(附答案可下載)
- 電梯維保服務(wù)質(zhì)量承諾書
- 2026云南省普洱市事業(yè)單位招聘工作人員390人重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 2026年輔警招聘考試試題庫100道及答案【歷年真題】
- 接線工藝要求培訓(xùn)
- 2025至2030中國稀有糖行業(yè)深度研究及發(fā)展前景投資評(píng)估分析
- 2026廣西壯族自治區(qū)公安機(jī)關(guān)人民警察特殊職位招錄考試195人參考題庫附答案
- 《畢業(yè)設(shè)計(jì)(論文)》課程教學(xué)大綱(本科)
- 2025年人口老齡化對(duì)醫(yī)療衛(wèi)生服務(wù)的影響研究報(bào)告及未來發(fā)展趨勢預(yù)測
- 核醫(yī)學(xué)科骨轉(zhuǎn)移顯像診斷指南
評(píng)論
0/150
提交評(píng)論