目錄
一、定義視圖
1、建立視圖
語法:CREATE VIEW 視圖名 【列名】... AS 子查詢 【WITH CHECK OPTION】
WITH CHECK OPTION:加上這個語句後即對視圖的修改需要符合定義視圖時子查詢中的條件表達式。
例1:單個表上的視圖
CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept='IS';
解釋:建立信息系學生的視圖。
例2:多個表上的視圖
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';
解釋:建立信息系選修了1號課程的學生的視圖。
例3:在視圖上建立視圖
CREATE VIEW IS_S2 AS SELECT Sno, Sname, Grade FROM IS_S1 WHERE Grade>=90;
解釋:建立信息系選修1號課程且成績在90分以上的學生視圖。
例4:帶虛擬列的視圖(帶表達式的視圖)
CREATE VIEW BT_S(Sno, Sname, Sbirth) AS SELECT Sno, Sname, 2014-Sage FROM Student;
解釋:反映學生出生年份的視圖。
例5:分組視圖
CREATE VIEW S_G(Sno, Gavg) AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno;
解釋:將學生的學號及平均成績定義爲一個視圖。
2、刪除視圖
語法:DROP VIEW 視圖名;
例:DROP VIEW S_G;
二、查詢視圖
視圖定義後就可以向對基本表一樣對視圖進行查詢了。
例1:SELECT Sno, Sage FROM IS_Student WHERE Sage<20;
解釋:使用剛剛定義的視圖IS_Student進行查詢年齡小於20歲的學生。
例2:SELECT * FROM IS_S1;
解釋:查詢剛剛定義的視圖IS_S1。
三、更新視圖
由於視圖是不實際存在的虛表,因此對視圖的更新最終要轉換爲對基本表的更新。
例:UPDATE IS_Student SET Sname='lili' WHERE Sno='201215125';
解釋:將信息系學生視圖IS_Student中學號爲“201215125”的學生姓名改爲“lili”。
四、視圖的作用
1) 視圖能夠簡化用戶的操作
2) 視圖使用戶能以多種角度看待同一數據
3) 視圖對重構數據庫提供了一定程度上的邏輯獨立性
4) 視圖能夠對機密數據提供安全保護
5) 適當利用視圖可以更清晰地表達查詢