SQL-視圖
第三章 關系數(shù)據庫標準語言SQL
3.1 SQL概述
3.2 數(shù)據定義
3.3 查詢
3.4 數(shù)據更新
3.5 視圖
3.6 數(shù)據控制
3.7 嵌入式SQL
3.8 小結
SQL-視圖
視圖的特點
虛表,是從一個或幾個基本表(或視圖)導出的表
只存放視圖的定義,不會出現(xiàn)數(shù)據冗余
基表中的數(shù)據發(fā)生變化,從視圖中查詢出的數(shù)據也隨之改變
基于視圖的操作
查詢
刪除
SQL-視圖
受限更新
定義基于該視圖的新視圖
視圖
1. 定義視圖
2. 查詢視圖
3. 更新視圖
4. 視圖的作用
SQL-視圖
建立視圖
CREATE VIEW
<視圖名> [(<列名> [,<列名>]…)]
AS <子查詢>
[WITH CHECK OPTION];
說明:
DBMS執(zhí)行CREATE VIEW語句時只是把視圖的定義存入數(shù)據字典,并不執(zhí)行其中的SELECT語句。
在對視圖查詢時,按視圖的定義從基本表中將數(shù)據查出。
SQL-視圖
組成視圖的屬性列名:
全部省略或全部指定
省略: 由子查詢中SELECT目標列中的諸字段組成
明確指定視圖的所有列名:
(1) 某個目標列是集函數(shù)或列表達式
(2) 目標列為 *
(3) 多表連接時選出了幾個同名列作為視圖的字段
(4) 需要在視圖中為某個列啟用新的更合適的名字
SQL-視圖
[例1] 建立信息系學生的視圖。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= ’IS’;
從單個基本表導出
只是去掉了基本表的某些行和某些列
保留了碼
SQL-視圖
WITH CHECK OPTION
透過視圖進行增刪改操作時,不得破壞視圖定義中的謂詞條件(即子查詢中的條件表達式)
[例2] 建立信息系學生的視圖,并要求透過該視圖進行的更新操作只涉及信息系學生。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= ’IS’
WITH CHECK OPTION;
SQL-視圖
對IS_Student視圖上的更新操作說明:
修改操作:DBMS自動加上Sdept= ’IS’的條件
刪除操作:DBMS自動加上Sdept= ’IS’的條件
插入操作:DBMS自動檢查Sdept屬性值是否為’IS’
如果不是,則拒絕該插入操作
如果沒有提供Sdept屬性值,則自動定義Sdept為’IS’
SQL-視圖
基于多個表的視圖
[例4] 建立信息系選修了1號課程的學生視圖。
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’;
SQL-視圖
基于視圖的視圖
[例5] 建立信息系選修了1號課程且成績在90分以上的學生的視圖。
CREATE VIEW IS_S2
AS
第三章 關系數(shù)據庫標準語言SQL
3.1 SQL概述
3.2 數(shù)據定義
3.3 查詢
3.4 數(shù)據更新
3.5 視圖
3.6 數(shù)據控制
3.7 嵌入式SQL
3.8 小結
SQL-視圖
視圖的特點
虛表,是從一個或幾個基本表(或視圖)導出的表
只存放視圖的定義,不會出現(xiàn)數(shù)據冗余
基表中的數(shù)據發(fā)生變化,從視圖中查詢出的數(shù)據也隨之改變
基于視圖的操作
查詢
刪除
SQL-視圖
受限更新
定義基于該視圖的新視圖
視圖
1. 定義視圖
2. 查詢視圖
3. 更新視圖
4. 視圖的作用
SQL-視圖
建立視圖
CREATE VIEW
<視圖名> [(<列名> [,<列名>]…)]
AS <子查詢>
[WITH CHECK OPTION];
說明:
DBMS執(zhí)行CREATE VIEW語句時只是把視圖的定義存入數(shù)據字典,并不執(zhí)行其中的SELECT語句。
在對視圖查詢時,按視圖的定義從基本表中將數(shù)據查出。
SQL-視圖
組成視圖的屬性列名:
全部省略或全部指定
省略: 由子查詢中SELECT目標列中的諸字段組成
明確指定視圖的所有列名:
(1) 某個目標列是集函數(shù)或列表達式
(2) 目標列為 *
(3) 多表連接時選出了幾個同名列作為視圖的字段
(4) 需要在視圖中為某個列啟用新的更合適的名字
SQL-視圖
[例1] 建立信息系學生的視圖。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= ’IS’;
從單個基本表導出
只是去掉了基本表的某些行和某些列
保留了碼
SQL-視圖
WITH CHECK OPTION
透過視圖進行增刪改操作時,不得破壞視圖定義中的謂詞條件(即子查詢中的條件表達式)
[例2] 建立信息系學生的視圖,并要求透過該視圖進行的更新操作只涉及信息系學生。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= ’IS’
WITH CHECK OPTION;
SQL-視圖
對IS_Student視圖上的更新操作說明:
修改操作:DBMS自動加上Sdept= ’IS’的條件
刪除操作:DBMS自動加上Sdept= ’IS’的條件
插入操作:DBMS自動檢查Sdept屬性值是否為’IS’
如果不是,則拒絕該插入操作
如果沒有提供Sdept屬性值,則自動定義Sdept為’IS’
SQL-視圖
基于多個表的視圖
[例4] 建立信息系選修了1號課程的學生視圖。
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’;
SQL-視圖
基于視圖的視圖
[例5] 建立信息系選修了1號課程且成績在90分以上的學生的視圖。
CREATE VIEW IS_S2
AS

