1、视图
1.1 什么是视图
- 视图(VIEW)也称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。
- 视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。
- 在数据库中只存放视图的定义,而不存放视图对应的数据。视图的值是定义表达式计算后所得到的结果。
1.2 视图在什么情况下可以修改?
如果能够保证视图里的信息能够唯一地映射回基表里的信息,那么才能够对视图进行修改,对视图的修改将自动和实时地在相应基表中所映射的数据上进行。
比如视图里的信息包含主键,那么毋庸置疑,这肯定是满足唯一映射的。
1.3 视图的定义
SQL中定义视图语句的一般格式为:
CREATE VIEW <视图名>[(<属性列名1>[,<属性列名2>,...])]
AS 子查询
[WITH CHECK OPTION]
说明:
- 任选项[WITH CHECK OPTION]表示对视图进行UPDATE和INSERT操作时要保证修改和插入的元组须满足视图定义中的子查询所含的谓词条件。
- DBMS执行语句的结果只是把视图的定义存入数据字典中,并不执行其中的子查询。
1.4 视图的删除
SQL中删除视图语句的一般格式为:
DROP VIEW 视图名 [CASCADE];
说明
- 语句的功能是将视图的定义从数据字典删除。
- 在有的DBMS中,基本表被删除后,由该基本表导出的所有视图(定义)并没有被删除,但已无法使用。需要使用DROP VIEW 语句来删除这些视图(定义)。如果该视图上还导出了其他视图,需使用CASCADE选项,把该视图和由它导出的所有视图一起删除,否则该操作被拒绝执行。
1.5 在什么情况下可以用视图
比如我们建立了一个表记录员工的通讯,地址,家庭信息,但是家庭信息不想让一些用户知道,这个时候两种解决方法:
(1)再建立一个表放家庭信息(显然并不好,增加了表的个数,管理起来就更难)
(2)建立视图,把想要给用户知道的信息投影到视图里面即可。(显然这种才是更好的解决方案)