數(shù)據(jù)庫原理及應(yīng)用視圖及授權(quán)課件_第1頁
數(shù)據(jù)庫原理及應(yīng)用視圖及授權(quán)課件_第2頁
數(shù)據(jù)庫原理及應(yīng)用視圖及授權(quán)課件_第3頁
數(shù)據(jù)庫原理及應(yīng)用視圖及授權(quán)課件_第4頁
數(shù)據(jù)庫原理及應(yīng)用視圖及授權(quán)課件_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫原理與應(yīng)用南方醫(yī)科大學生物醫(yī)學工程學院信息技術(shù)系 視 圖視圖的特點虛表,是從一個或幾個基本表(或視圖)導出的表只存放視圖的定義,不會出現(xiàn)數(shù)據(jù)冗余基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變視 圖1、建立視圖2、刪除視圖3、查詢視圖4、更新視圖1、建立視圖語句格式 CREATE VIEW ( ,) AS WITH CHECK OPTION;子查詢不允許含有ORDER BY子句和DISTINCT短語。WITH CHECK OPTION表示對視圖進行增刪改操作時,不得破壞視圖定義中的謂詞條件(即子查詢中的條件表達式)。常見的視圖形式行列子集視圖WITH CHECK OPTION的視圖基

2、于多個基表的視圖基于視圖的視圖帶表達式的視圖分組視圖行列子集視圖從單個基本表導出,只是去掉了基本表的某些行和某些列,而保留了碼。例1 建立銷售部員工的視圖。 CREATE VIEW Sales_Stuff AS SELECT Sno,Sname,Sage FROM Stuff WHERE Sdept= Sales;WITH CHECK OPTION的視圖例2 建立銷售部員工的視圖,并要求透過該視圖進行的更新操作只涉及銷售部員工。 CREATE VIEW Sales_Stuff AS SELECT Sno,Sname,Sage FROM Stuff WHERE Sdept= Sales WITH

3、 CHECK OPTION;基于多個基表的視圖例3 建立銷售部售賣了1號商品的員工視圖。CREATE VIEW Sales_S1(Sno,Sname,Grade) AS SELECT Stuff.Sno,Sname,Grade FROM Student,SG WHERE Sdept= Sales AND Stuff.Sno=SG.Sno AND SG.Gno= 1;基于視圖的視圖例4 建立信息系售賣了1號商品且業(yè)績績在90以上的員工的視圖。 CREATE VIEW Sales_S2 AS SELECT Sno,Sname,Grade FROM Sales_S1 WHERE Grade=90;帶

4、表達式的視圖定義視圖時可以設(shè)置一些派生屬性列, 也稱為虛擬列。例5 定義一個反映員工出生年份的視圖。CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2015-Sage FROM Stuff帶表達式的視圖必須明確定義組成視圖的各個屬性列名。建立分組視圖可以用帶有集函數(shù)和GROUP BY子句的查詢來定義視圖。例6 將員工的工號及他的平均業(yè)績定義為一個視圖。(假設(shè)SG表中“成績”列Grade為數(shù)字型) CREATE VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SG GROUP BY S

5、no;視 圖1、建立視圖2、刪除視圖3、查詢視圖4、更新視圖5、視圖的作用2、刪除視圖DROP VIEW ;該語句從數(shù)據(jù)字典中刪除指定的視圖定義由該視圖導出的其他視圖定義仍在數(shù)據(jù)字典中,但已不能使用,必須顯式刪除刪除基表時,由該基表導出的所有視圖定義都必須顯式刪除例9 刪除視圖Sales_S1。 DROP VIEW Sales_S1;視 圖1、建立視圖2、刪除視圖3、查詢視圖4、更新視圖5、視圖的作用3、查詢視圖從用戶角度:查詢視圖與查詢基本表相同DBMS實現(xiàn)視圖查詢的方法視圖實體化法(View Materialization)有效性檢查:檢查所查詢的視圖是否存在執(zhí)行視圖定義,將視圖臨時實體化

6、,生成臨時表查詢視圖轉(zhuǎn)換為查詢臨時表查詢完畢刪除被實體化的視圖(臨時表)查詢視圖例1 在銷售部員工的視圖中找出年齡小于30歲的員工。 SELECT Sno,Sage FROM Sales_Stuff WHERE Sage=90;S_G視圖定義: CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SG GROUP BY Sno;視 圖1、建立視圖2、刪除視圖3、查詢視圖4、更新視圖5、視圖的作用4、更新視圖用戶角度:更新視圖與更新基本表相同DBMS實現(xiàn)視圖更新的方法視圖實體化法(View Materialization)視圖消解法(

7、View Resolution)指定WITH CHECK OPTION子句后DBMS在更新視圖時會進行檢查,防止用戶通過視圖對不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進行更新更新視圖例1 將銷售部員工視圖IS_Stuff中學號95002的員工姓名改為“劉辰”。 UPDATE Sales_Stuff SET Sname= 劉辰 WHERE Sno= 95002;轉(zhuǎn)換后的語句:UPDATE StuffSET Sname= 劉辰WHERE Sno= 95002 AND Sdept= Sales;更新視圖例2 向銷售部員工視圖Sales_Stuff中插入一個新的員工記錄:95029,趙新,25歲 INSERT I

8、NTO Sales_Stuff VALUES(95029, 趙新,25);轉(zhuǎn)換為對基本表的更新: INSERT INTO Stuff(Sno,Sname,Sage,Sdept) VALUES(95029, 趙新,20,Sales );更新視圖例3 刪除視圖IS_Stuff中工號為95029的記錄。 DELETE FROM Sales_Stuff WHERE Sno= 95029;轉(zhuǎn)換為對基本表的更新: DELETE FROM Stuff WHERE Sno= 95029 AND Sdept= Sales;更新視圖的限制一些視圖是不可更新的,因為對這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應(yīng)基本

9、表的更新(對兩類方法均如此)例:視圖S_G為不可更新視圖。 CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SG GROUP BY Sno;更新視圖對于如下更新語句:UPDATE S_GSET Gavg=90WHERE Sno= 95001;無論實體化法還是消解法都無法將其轉(zhuǎn)換成對基本表SG的更新。實際系統(tǒng)對視圖更新的限制允許對行列子集視圖進行更新對其他類型視圖的更新,不同系統(tǒng)有不同限制課堂練習1建立銷售部售賣了編號為92001商品的員工視圖。在銷售部員工的視圖中找出年齡大于30歲的員工。向銷售部員工視圖Sales_Stuff中

10、插入一個新的員工記錄:95028,劉晨,27歲 授 權(quán)將對指定操作對象的指定操作權(quán)限授予指定的用戶。 授 權(quán)GRANT語句的一般格式: GRANT ,. ON TO ,. WITH GRANT OPTION;(1) 操作權(quán)限(2) 用戶的權(quán)限建表(CREATETAB)的權(quán)限:屬于DBADBA授予-普通用戶基本表或視圖的屬主擁有對該表或視圖的一切操作權(quán)限接受權(quán)限的用戶:一個或多個具體用戶PUBLIC(全體用戶)(4) WITH GRANT OPTION子句指定了WITH GRANT OPTION子句:獲得某種權(quán)限的用戶還可以把這種權(quán)限再授予別的用戶。未指定WITH GRANT OPTION子句:

11、獲得某種權(quán)限的用戶只能使用該權(quán)限,不能傳播該權(quán)限。例題例1 把查詢Stuff表權(quán)限授給用戶U1。 GRANT SELECT ON TABLE Stuff TO U1;SQL Server中取消了TABLE關(guān)鍵字。例題例2 把對Stuff表和Goods表的全部權(quán)限授予用戶U2和U3。 GRANT ALL PRIVILEGES ON TABLE Stuff, Goods TO U2, U3;SQL Server中一條GRANT語句只能對一張表或視圖進行授權(quán)。例題例3 把對表SG的查詢權(quán)限授予所有用戶。 GRANT SELECT ON TABLE SG TO PUBLIC;例題例4 把查詢Stuff

12、表和修改員工號的權(quán)限授給用戶U4。 GRANT UPDATE(Sno), SELECT ON TABLE Stuff TO U4;例題例5 把對表SG的INSERT權(quán)限授予U5用戶,并允許他再將此權(quán)限授予其他用戶。 GRANT INSERT ON TABLE SG TO U5 WITH GRANT OPTION;收回權(quán)限REVOKE語句的一般格式為: REVOKE ,. ON FROM ,.;功能:從指定用戶那里收回對指定對象的指定權(quán)限例題例7 把用戶U4修改員工號的權(quán)限收回。REVOKE UPDATE(Sno)ON TABLE Stuff FROM U4;例題例8 收回所有用戶對表SG的查詢

13、權(quán)限。REVOKE SELECT ON TABLE SG FROM PUBLIC;例題例9 把用戶U5對SG表的INSERT權(quán)限收回。REVOKE INSERT ON TABLE SG FROM U5;SQL靈活的授權(quán)機制DBA擁有對數(shù)據(jù)庫中所有對象的所有權(quán)限,并可以根據(jù)應(yīng)用的需要將不同的權(quán)限授予不同的用戶。用戶對自己建立的基本表和視圖擁有全部的操作權(quán)限,并且可以用GRANT語句把其中某些權(quán)限授予其他用戶。被授權(quán)的用戶如果有“繼續(xù)授權(quán)”的許可,還可以把獲得的權(quán)限再授予其他用戶。所有授予出去的權(quán)力在必要時又都可以用REVOKE語句收回。課堂練習2把查詢Stuff表和修改員工號的權(quán)限授給用戶U4把對表stuff的INSERT權(quán)限授予U5用戶,并允許他再將此權(quán)限授予其他用戶收回所有用戶對表SG的查詢權(quán)限* 嵌 入 式 SQLSQL語言提供了兩種不同的使用方式:交互式嵌入式為什么要引入嵌入式SQLSQL語言是非過程性語言事務(wù)處理應(yīng)用需要高級語言這兩種方式細節(jié)上有差別,在程序設(shè)計的環(huán)境下,SQL語句要做某些必要的擴充DBMS處理宿主型數(shù)據(jù)庫語言SQL 的方法修改和擴充主語言使之能處理SQL語句(少用)預(yù)編譯(多用)由DBMS的預(yù)處理程序?qū)υ闯绦蜻M行掃描,識別出SQL語句;把它們轉(zhuǎn)換成主語言調(diào)用語句,以使主語言編譯程序能識別它;最后由主語言的編譯程序?qū)⒄麄€源程序編譯成目標碼。嵌

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論