第四节 视 图 (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)
视图的特点:虚表,是从一个或几个基本表(或视图)导出的表。只存放视图的定义,不会出现数据冗
余。基表中的数据发生变化,从视图中查询出的数据也随之改变。基于视图的操作:查询;删除;受限更新;
定义基于该视图的新视图。
1. 建立视图
语句格式:CREATE VIEW <视图名> [(<列名> [,<列名>]…)] AS <子查询> [ WITH CHECK OPTION ];
WITH CHECK OPTION
透过视图进行增删改操作时,不得破坏视图定义中的谓词条件,(即子查询中的条件表达式),把视图
的定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出。
组成视图的属性列名:全部省略或全部指定,省略由子查询中SELECT目标列中的诸字段组成,明确指定视图
的所有列名:
(1) 某个目标列是集函数或列表达式;
(2) 目标列为 *;
(3) 多表连接时选出了几个同名列作为视图的字段;
(4) 需要在视图中为某个列启用新的更合适的名字。
常见的视图形式:行列子集视图;WITH CHECK OPTION的视图;基于多个基表的视图;基于视图的视图;
带表达式的视图;分组视图;行列子集视图。
[例1] 建立信息系学生的视图。
CREATE VIEW IS_Student
AS SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= 'IS';
从单个基本表导出,只是去掉了基本表的某些行和某些列,保留了码,WITH CHECK OPTION的视图。
[例2] 建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。
CREATE VIEW IS_Student
AS SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= 'IS'
WITH CHECK OPTION;
对IS_Student视图的更新操作——修改操作:DBMS自动加上Sdept= 'IS'的条件;删除操作:DBMS自动
加上Sdept= 'IS'的条件;插入操作:DBMS自动检查Sdept属性值是否为'IS';如果不是,则拒绝该插入操作;
如果没有提供Sdept属性值,则自动定义Sdept为'IS'。
|