数据库视图功能的使用
创建视图的格式:
create view <view name> as
select <attributes name>
from <table name>
where<requirments>
为什么要使用视图:
- 简化了操作,把经常使用的数据定义为视图。
- 安全性,用户只能查询和修改能看到的数据。
- 逻辑上的独立性,屏蔽了真实表的结构带来的影响。
视图中的内容会随着表项自动更新。
视图也是可以插入和删除的,但是注意对视图的插入和删除从理论上来说就可能有问题:
而各种数据库对这个问题也有对应的处理方案:
单个表的视图是可以的,就像普通表一样。
多个表的视图是不可以的,需要触发器。
另外,即使是单表也有限制:
来源:http://1035054540-qq-com.iteye.com/blog/1499430
如果视图包含下述结构中的任何一种,那么它就是不可更新的:
(1)聚合函数;
(2)DISTINCT关键字;
(3)GROUP BY子句;
(4)ORDER BY子句;
(5)HAVING子句;
(6)UNION运算符;
(7)位于选择列表中的子查询;
(8)FROM子句中包含多个表;
(9)SELECT语句中引用了不可更新视图;
(10)WHERE子句中的子查询,引用FROM子句中的表;
(11)ALGORITHM 选项指定为TEMPTABLE(使用临时表总会使视图成为不可更新的)。
另外,如果原表中attribute有not null限制也不一定可以更新,如果not null的那个attribute没有包括在视图中就不能更新了,因为通过视图更新的话不存在的项是会设置为null的。