数据库系统概论之视图
1:视图定义
视图是从一个或者多个基础表(或视图)导出来的表,它与基础表不同,是一张虚拟表。数据库中存在视图的定义,并不存放视图对应的数据,这些数据将保存在原来的基础表中;因此一旦基础表的数据发生变化则视图也发生变化。视图一旦定义之后,就可以与基本表一样被查询,删除;也可以在视图之上再定义新的视图,但对视图的更新(增删改)操作有一定的限制。
2:视图创建语句(略)
3:视图的更新
更新视图是通过视图来插入、删除和修改数据。由于视图是不实际存储数据的虚拟表,因此对视图的更新操作最终将转换为对基础表的操作。为防止用户通过视图对数据进行增加、删除、修改,可以在定义视图的时候使用WITH CHECK OPTION子句进行约束。这样在视图上进行增删改的时候,关系数据库系统会检查视图的定义中的条件,若不满足条件则拒绝指定该更新操作。
例如:
CREATE VIEW IS_student AS SELECT sno, sname, sage FROM student WHERE sdept = 'IS' WITH CHECK OPTION;
我们将student表之上创建一个IS_Student视图,该视图的约束条件为sdept = 'IS',所以当我们要对视图更新时候必须要满足条件sdept =‘is’。当我们对视图IS_STUDENT执行查询时候,查询语句:
SELECT * FROM IS_STUDENT
只能查出sdept =‘IS’的记录。 所以其余的更新操作也就只能符合sdept=‘IS’条件才可以。另外对于一个不可以更新的视图创建导出来的视图也不可以更新。
4:视图的作用:
a: 视图可以简化用户的操作,例如我们查询逻辑需要3张以上的表进行连接查询时候,查询条件比较复杂,这时候我们就这可以将多张表的join创建一个视图,之后对该视图进行查询就可以了,这样可以简化查询的复杂性。
b:视图可以从多个角度让用户看数据。
c:数据可以对机密数据提供保障,例如我们有一个用户表,里面提供的有用户基本信息与一些敏感信息,但是有时候需要将一些基本信息暴露给用户,这时候如果将整张表暴露出去会危险,因此可以在用户表上创建一个视图进行安全保护。