SQL复习六(视图)
视图是关系数据库系统提供给用户以多角度观察数据库中数据的一种重要方法。视图是从一个或者几个表中导出的虚拟表。视图一经定义就可以被查询和删除。也可以在视图上定义视图。用视图完成数据的更新(增,删,改)操作有一定的限制。
修改规则:
1)如果视图是从多个表使用连接操作导出的,不可以更新;
2)如果导出视图的过程中,使用了分组和集函数,不可以更新;
3)如果视图是从单个基本表使用选择和投影,导出的属性集包含了基本表的一个候选集,这个视图成为“行列子集视图”,允许对其进行更新操作。
1.1定义视图
语法:
create view <视图名> [<列名1,列名……>]
as <select 子查询语句>
[with check option]
组成视图的列名要么全部省略,要么全部指定。下列三种情况必须明确指定组成视图的列名:
1)某个目标列不是单纯的属性名,而是集函数或列表达式;
2)多连接导出的视图中有几个同名列作为该视图的属性列名
3)需要在视图中为某个列启用新的更合适的名字。
<select 子查询语句>可以是任意复杂的select语句,通常不允许有order by 和distinct短语;
with check option 表示视图进行update,insert 和delete操作时要保证更新,插入和删除的元祖满足视图定义中的谓词条件(select子查询中的条件表达式)
create viw emp_view as select empno,ename,job,deptno from emp with check option
create view emp_tatal (empno,ename,tatal) as select empno,ename,sal+ifnull(comm,0) from emp
1.2 删除视图
语法:
drop view <视图名>
drop view emp_tatal;
1.3 查询视图
和使用基础表一样使用视图。
select * from emp_view;
1.4 更新视图
跟新视图,指着通过视图来插入,删除,和修改数据。视图的跟新最终要转化为对基本表的更新。