视图的作用:
视图简单描述就是一条查询的sql语句查询出来的虚拟表,可以对这张虚拟表进行sql增删改查操作,可以对这张表进行权限操作将这张表设置为只读操作,从而达到了对一些机密数据起到保护作用
1.创建视图
create view 视图名称 as select * from 表名 where 条件
2.对简单视图进行DML操作
SQL> insert into 视图名称 values(1,'a','aa','05-JUN-88',10);
SQL> update 视图名称 set ename='cc' where ename='KING';
SQL> delete 视图名称 where ename='cc';
SQL> select * from 视图名称 where deptno=10
3.创建只读视图
create view 视图名称 as select * from 表名 where 条件 with read only;
4.视图相关的表发生改变的时候,视图查询到的数据也相应发生变化
5.创建检查约束视图
create view 视图名称 as select * from 表名 where 条件 with check option
在进行视图操作的时候,所创建的视图查询出来的数据不包含条件中则不能操作
eg:
Sql>create view 视图名称 as select * from 表名 where deptno=10 with check option;
SQL> insert into 视图名称 values('2','c','cc','02-JAN-55',10);
SQL> insert into 视图名称 values('3','d','dd','02-JAN-65',20);
insert into vw_emp_check values('3','d','dd','02-JAN-65',20);
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation
创建检查视图:对通过视图进行的增删改操作进行检查,要求增删改操作的数据必须是select查询所能查询到的数据,20不在查询范围内,违反检查约束,所以无法插入;
6.查看视图
使用数据字典视图
1 dba_views——DBA视图描述数据库中的所有视图
2 all_views——ALL视图描述用户“可访问的”视图
3 user_views——USER视图描述“用户拥有的”视图
4 dba_tab_columns——DBA视图描述数据库中的所有视图的列(或表的列)
5 all_tab_columns——ALL视图描述用户“可访问的”视图的列(或表的列)
6 user_tab_columns——USER视图描述“用户拥有的”视图的列(或表的列)
7.执行视图的原理实例
eg:假设视图v_emp的定义语句如下:
create view v_emp
as
select empno,ename,loc from employees emp,departments dept
where emp.deptno=dept.deptno and dept.deptno=10;
当用户执行如下查询语句时:
select ename from v_emp where empno=9876;
oracle将把这条SQL语句与视图定义语句“合并”成如下查询语句:
select ename from employees emp,departments dept
where emp.deptno=dept.deptno and dept.deptno=10 and empno=9876;
然后,解析(并优化)合并后的查询语句,并执行查询语句;