一,语法:
create [force|noforce][or replace] view 视图名称[(别名1,别名2)]
as
子查询[with check option [constraint 约束名称] ] [with read only];
force:表示要创建视图的表不存在也可以创建视图
noforce:(默认)表示要创建视图的表必须存在,否则无法创建
or replace:表示视图的替换,如果创建的视图不存在则创建新的,若已存在,则将其替换
with check option 子句:用来保证视图创建的条件不被更新
with read only 子句:设置视图为只读
实例:创建一个简单查工资的视图
create or replace view v_forsal
as
select * from emp where sal>2000;
二,在视图上执行DML操作:(视图最好只进行查询操作)
简单视图更新的时候会直接影响到实体表数据(单表映射数据)
创建简单视图:
create or replace view v_deptno
as
select empno,ename,job,sal from emp where deptno=10;
1,新增操作
insert into v_deptno(empno,ename,job,sal) values(123456,'bigboss','boss',10000)
此时插入数据,由于视图查询的不是*所以插入也只会从插入部分数据,没有映射到视图之中的列,都会被null填充,若列约束为非空,则会报错
2,修改操作
update v_deptno set ename = 'xiao',job = 'yanyuan',sal = 1500 where empno = 123456;
3,删除操作
delete from v_deptno where empno = 123456;
复杂视图无法更新(多表映射)--可运用触发器实现
三,删除视图
drop view 视图名称