




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL(三)1、視圖的概念視圖是從一個或幾個基本表中導(dǎo)出的虛擬表,其數(shù)據(jù)沒有實(shí)際存儲,但可以和表一樣操作視圖具有和表一樣的邏輯結(jié)構(gòu)定義但視圖沒有相應(yīng)的存儲文件,而每個表都有相應(yīng)的存儲文件視圖的特點(diǎn)虛表,是從一個或幾個基本表(或視圖)導(dǎo)出的表DBMS只存放視圖的定義,不會出現(xiàn)數(shù)據(jù)冗余基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變視圖(View)視圖(View)給出了SQL數(shù)據(jù)庫的外模式定義外模式概念模式內(nèi)模式關(guān)系子模式關(guān)系模式存儲模式視圖(View)基本表文件SQL用戶ANSI/SPARC關(guān)系數(shù)據(jù)庫SQL數(shù)據(jù)庫4.6.1建立視圖一、建立視圖語句格式
CREATEVIEW
<視圖名>[(<列名>[,<列名>]…)]AS<子查詢>[WITHCHECKOPTION];建立視圖(續(xù))DBMS執(zhí)行CREATEVIEW語句時只是把視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT語句。在對視圖查詢時,按視圖的定義從基本表中將數(shù)據(jù)查出。組成視圖的屬性列名全部省略或全部指定省略:
由子查詢中SELECT目標(biāo)列中的諸字段組成明確指定視圖的所有列名:(1)某個目標(biāo)列是集函數(shù)或列表達(dá)式(2)多表連接時選出了幾個同名列作為視圖的字段(3)需要在視圖中為某個列啟用新的更合適的名字行列子集視圖
[例76]建立信息系學(xué)生的視圖。
CREATEVIEWIS_StudentAS
SELECTSno,Sname,SageFROMStudentWHERESdept='IS';行列子集視圖定義:從單個基本表導(dǎo)出,只是去掉了基本表的某些行和某些列,保留了碼建立視圖(續(xù))WITHCHECKOPTION通過視圖進(jìn)行增刪改操作時,不得破壞視圖定義中的謂詞條件(即子查詢中的條件表達(dá)式)
WITHCHECKOPTION的視圖[例77]建立信息系學(xué)生的視圖,并要求透過該視圖進(jìn)行的更新操作只涉及信息系學(xué)生。
CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS'WITHCHECKOPTION;對IS_Student視圖的更新操作修改操作:DBMS自動加上Sdept='IS'的條件刪除操作:DBMS自動加上Sdept='IS'的條件插入操作:DBMS自動檢查Sdept屬性值是否為'IS'如果不是,則拒絕該插入操作如果沒有提供Sdept屬性值,則自動定義Sdept為'IS'基于多個基表的視圖[例78]建立信息系選修了1號課程的學(xué)生視圖。
CREATEVIEWIS_S1(Sno,Sname,Grade)ASSELECTStudent.Sno,Sname,GradeFROMStudent,SCWHERESdept='IS'AND
Student.Sno=SC.SnoAND
SC.Cno='1';基于視圖的視圖
[例79]建立信息系選修了1號課程且成績在90分以上的學(xué)生的視圖。
CREATEVIEWIS_S2ASSELECTSno,Sname,GradeFROMIS_S1WHEREGrade>=90;帶表達(dá)式的視圖[例80]定義一個反映學(xué)生出生年份的視圖。
CREATEVIEWBT_S(Sno,Sname,Sbirth)ASSELECTSno,Sname,2000-SageFROMStudent設(shè)置一些派生屬性列,也稱為虛擬列--Sbirth
,帶表達(dá)式的視圖必須明確定義組成視圖的各個屬性列名建立分組視圖[例81]將學(xué)生的學(xué)號及他的平均成績定義為一個視圖
假設(shè)SC表中“成績”列Grade為數(shù)字型
CREATVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;用帶有聚集函數(shù)和GROUPBY子句的查詢來定義的視圖,稱為分組視圖。建立視圖(續(xù))一類不易擴(kuò)充的視圖在SELECT子句中以SELECT*方式創(chuàng)建的視圖可擴(kuò)充性差,應(yīng)盡可能避免建立視圖(續(xù))[例82]將Student表中所有女生記錄定義為一個視圖
CREATEVIEWF_Student1(stdnum,name,sex,age,dept)ASSELECT*FROMStudentWHERESsex='女';缺點(diǎn):修改基表Student的結(jié)構(gòu)后,Student表與F_Student1視圖的映象關(guān)系被破壞,導(dǎo)致該視圖不能正確工作。建立視圖(續(xù))
CREATEVIEWF_Student2(stdnum,name,sex,age,dept)ASSELECTSno,Sname,Ssex,Sage,SdeptFROMStudentWHERESsex=‘女’;
為基表Student增加屬性列不會破壞Student表F_Student2視圖的映象關(guān)系。常見的視圖形式行列子集視圖WITHCHECKOPTION的視圖基于多個基表的視圖基于視圖的視圖帶表達(dá)式的視圖分組視圖二.刪除視圖DROPVIEW<視圖名>;該語句從數(shù)據(jù)字典中刪除指定的視圖定義由該視圖導(dǎo)出的其他視圖定義仍在數(shù)據(jù)字典中,但已不能使用,必須顯式刪除刪除基表時,由該基表導(dǎo)出的所有視圖定義都必須顯式刪除刪除視圖(續(xù))
[例83]刪除視圖IS_S1
DROPVIEWIS_S1;
4.6.2查詢視圖從用戶角度:查詢視圖與查詢基本表相同DBMS實(shí)現(xiàn)視圖查詢的方法實(shí)體化視圖(ViewMaterialization)有效性檢查:檢查所查詢的視圖是否存在執(zhí)行視圖定義,將視圖臨時實(shí)體化,生成臨時表查詢視圖轉(zhuǎn)換為查詢臨時表查詢完畢刪除被實(shí)體化的視圖(臨時表)new查詢視圖(續(xù))視圖消解法(ViewResolution)進(jìn)行有效性檢查,檢查查詢的表、視圖等是否存在。如果存在,則從數(shù)據(jù)字典中取出視圖的定義把視圖定義中的子查詢與用戶的查詢結(jié)合起來,轉(zhuǎn)換成等價的對基本表的查詢執(zhí)行修正后的查詢查詢視圖(續(xù))[例84]在信息系學(xué)生的視圖中找出年齡小于20歲的學(xué)生。
SELECTSno,SageFROMIS_StudentWHERESage<20;IS_Student視圖的定義(視圖定義例1):
CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS';查詢視圖(續(xù))視圖實(shí)體化法視圖消解法轉(zhuǎn)換后的查詢語句為:SELECTSno,SageFROMStudentWHERESdept='IS'ANDSage<20;查詢視圖(續(xù))[例85]查詢信息系選修了1號課程的學(xué)生SELECTSno,SnameFROMIS_Student,SCWHEREIS_Student.Sno=SC.SnoAND
SC.Cno='1';查詢視圖(續(xù))視圖消解法的局限有些情況下,視圖消解法不能生成正確查詢。采用視圖消解法的DBMS會限制這類查詢。
查詢視圖(續(xù))[例86]在S_G視圖中查詢平均成績在90分以上的學(xué)生學(xué)號和平均成績SELECT*FROMS_GWHEREGavg>=90;S_G視圖定義:
CREATEVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;查詢轉(zhuǎn)換錯誤:SELECTSno,AVG(Grade)FROMSCWHEREAVG(Grade)>=90GROUPBYSno;正確:SELECTSno,AVG(Grade)FROMSCGROUPBYSnoHAVINGAVG(Grade)>=90;4.6.3更新視圖用戶角度:更新視圖與更新基本表相同DBMS實(shí)現(xiàn)視圖更新的方法視圖實(shí)體化法(ViewMaterialization)視圖消解法(ViewResolution)指定WITHCHECKOPTION子句后
DBMS在更新視圖時會進(jìn)行檢查,防止用戶通過視圖對不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進(jìn)行更新更新視圖(續(xù))[例87]將信息系學(xué)生視圖IS_Student中學(xué)號95002
的學(xué)生姓名改為“劉辰”。UPDATEIS_StudentSETSname='劉辰'WHERESno='95002';轉(zhuǎn)換后的語句:UPDATEStudentSETSname='劉辰'WHERESno='95002'ANDSdept='IS';更新視圖(續(xù))[例88]向信息系學(xué)生視圖IS_S中插入一個新的學(xué)生記錄:95029,趙新,20歲INSERTINTOIS_StudentVALUES(‘95029’,‘趙新’,20);轉(zhuǎn)換為對基本表的更新:INSERTINTOStudent(Sno,Sname,Sage,Sdept)VALUES('95029','趙新',20,'IS');更新視圖(續(xù))[例89]刪除視圖CS_S中學(xué)號為95029的記錄DELETEFROMIS_StudentWHERESno='95029';轉(zhuǎn)換為對基本表的更新:DELETEFROMStudentWHERESno='95029'ANDSdept='IS';更新視圖的限制一些視圖是不可更新的,因?yàn)閷@些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新(對兩類方法均如此)例:視圖S_G為不可更新視圖。
CREATEVIEWS_G(Sno,Gavg)AS SELECTSno,AVG(Grade) FROMSC GROUPBYSno;更新視圖(續(xù))對于如下更新語句:UPDATES_GSETGavg=90WHERESno='95001';無論實(shí)體化法還是消解法都無法將其轉(zhuǎn)換成對基本表SC的更新實(shí)際系統(tǒng)對視圖更新的限制允許對行列子集視圖進(jìn)行更新對其他類型視圖的更新不同系統(tǒng)有不同限制DB2對視圖更新的限制:(1)若視圖是由兩個以上基本表導(dǎo)出的,則此視圖不允許更新。(2)若視圖的字段來自字段表達(dá)式或常數(shù),則不允許對此視圖執(zhí)行INSERT和UPDATE操作,但允許執(zhí)行DELETE操作。更新視圖(續(xù))(3)若視圖的字段來自集函數(shù),則此視圖不允許更新。(4)若視圖定義中含有GROUPBY子句,則此視圖不允許更新。(5)若視圖定義中含有DISTINCT短語,則此視圖不允許更新。(6)若視圖定義中有嵌套查詢,并且內(nèi)層查詢的FROM子句中涉及的表也是導(dǎo)出該視圖的基本表,則此視圖不允許更新。(7)一個不允許更新的視圖上定義的視圖也不允許更新更新視圖(續(xù))例:視圖GOOD_SC(修課成績在平均成績之上的元組)CREATEVIEWGOOD_SCASSELECTSno,Cno,GradeFROM
SCWHEREGrade>(SELECTAVG(Grade)FROMSC);4.6.4視圖的作用當(dāng)視圖中數(shù)據(jù)不是直接來自基本表時,定義視圖能夠簡化用戶的操作基于多張表連接形成的視圖基于復(fù)雜嵌套查詢的視圖含導(dǎo)出屬性的視圖1.視圖能夠簡化用戶的操作2.視圖使用戶能以多種角度看待同一數(shù)據(jù)視圖機(jī)制能使不同用戶以不同方式看待同一數(shù)據(jù),適應(yīng)數(shù)據(jù)庫共享的需要3.視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨(dú)立性例:數(shù)據(jù)庫邏輯結(jié)構(gòu)發(fā)生改變學(xué)生關(guān)系Student(Sno,Sname,Ssex,Sage,Sdept
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國家機(jī)關(guān)勞動合同樣本合同
- 工廠保安用工合同
- 消防課程安全課件
- 智能儀器儀表智能醫(yī)療應(yīng)用考核試卷
- 成人高考地理知識要點(diǎn)專項訓(xùn)練考核試卷
- 斯洛文尼亞網(wǎng)絡(luò)廣告競爭格局洞察考核試卷
- 文化用品租賃業(yè)務(wù)項目管理考核試卷
- 機(jī)場航站樓空氣質(zhì)量控制考核試卷
- 2024信息物理融合智能系統(tǒng)實(shí)施流程
- 資金籌劃咨詢合同范本
- TSG 07-2019電梯安裝修理維護(hù)質(zhì)量保證手冊程序文件制度文件表單一整套
- 2025深圳勞動合同下載
- 設(shè)備損壞評估報告范文
- 標(biāo)準(zhǔn)和計量管理制度范文(2篇)
- 透析患者心理問題護(hù)理干預(yù)
- 孕前口腔護(hù)理保健
- 《民航服務(wù)與溝通學(xué)》課件-第1講 服務(wù)與民航服務(wù)的概念
- 《大學(xué)生安全教育》課件 項目四 軍事安全
- 10KV電力配電工程施工方案
- 智能感知工程基礎(chǔ)知識單選題100道及答案解析
- 肌肉注射藥物不良反應(yīng)及預(yù)防措施研究
評論
0/150
提交評論