建立檢視
檢視是從一個或幾個基本表(或檢視)匯出的表,它與基本表不同,是一個虛表。資料庫中只存放檢視的定義,而不存放檢視對應的資料,資料仍在基本表中。一旦基本表中的資料發生變化,從檢視查出的資料也就發生了變化。所以說檢視就像一個視窗,透過視窗可以看到資料庫中的資料是否發生了變化。
舉例說明:
(1)建立資訊系學生的檢視:
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS'
WITH CHECK OPTION;
解釋如下:
1>:WITH CHECK OPTION:只能更新此檢視範圍內的資料
2>:組成檢視的屬性列或者全部省略或者全部指定,沒有第三選擇。如果省略,則該檢視的屬性列為SELECT子句中的屬性列,但是以下三種情況必須全部指定屬性列:
1.某個目標列是聚集函式或表示式
2.多表連線時選出同名列作為檢視的屬性列
3.需要在檢視中為某個列建立新的更適合的名字
3>上面的檢視是行列子集檢視,行列子集檢視:一個檢視從單個基本表匯出,去掉了基本表的某些行和列,保留了主碼。
(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';
(3)建立在檢視上的檢視
CREATE VIEW IS_S2
AS
SELECT Sno,Sname,Grade
FROM IS_S1
WHERE Grade>=90;
(4)帶有虛擬列的檢視
CREATE VIEW BT_S(Sno,Sname,Sbirth)
AS
SELECT Sno,Sname,2018-Sage
FROM Student;
(5)分組檢視:用帶有聚集函式或GROUP BY子句的查詢定義的檢視
CREATE VIEW S_G(Sno,Gavg)
AS
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno;