视图
视图是从一个或几个基本表(或视图)导出的表。是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍然放在原表中。
视图一经定义,就可以和基本表一样被查询、被删除。也可以在一个视图之上再定义新的视图,但对视图的更新操作则有一定的限制。
定义视图
一、建立视图
CREATE VIEW <视图名>[(<列名>[,<列名>]...)]
AS <子查询>
[WITH CHECK OPTION]
通常子查询不允许含有ORDER BY子句和DISTINCT短语
WITH CHECK OPTION表示对视图进行UPDATE,DELETE,INSERT操作时要保证更新、插入、删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。组成视图的属性列名或者全部省略或者全部指定,没有第三种选择。但是有特殊情况需要特别指明属性列:
(1)某个目标列不是单纯的属性名,而是聚集函数或列表达式;
(2)多表连接时选出几个同名列作为视图的字段;
(3)需要在视图中为某个列启用新的更合适的名字。
若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,我们称这类视图为行列子集视图。
二、删除视图
DROP VIEW <视图名> [CASCADE]
视图的作用
视图最终是定义在基本表之上的,对视图的一切操作最终也要转换为对基本表的操作。
1、视图能够简化用户的操作。
视图机制使用户可以将注意力集中在所关心的数据上。可以通过定义视图,使数据库看起来结构简单、清晰,并且可以简化用户的数据查询操作。
2、视图使用户能以多种角度看待同一数据
3、视图对重构数据库提供了一定程度的逻辑独立性
4、视图能够对机密数据提供安全保护
5、适当的利用视图可以更清晰的表达查询