视图的做用:sql
视图简单描述就是一条查询的sql语句查询出来的虚拟表,能够对这张虚拟表进行sql增删改查操做,能够对这张表进行权限操做将这张表设置为只读操做,从而达到了对一些机密数据起到保护做用数据库
1.建立视图oracle
create view 视图名称 as select * from 表名 where 条件优化
2.对简单视图进行DML操做spa
SQL> insert into 视图名称 values(1,'a','aa','05-JUN-88',10);it
SQL> update 视图名称 set ename='cc' where ename='KING';io
SQL> delete 视图名称 where ename='cc';原理
SQL> select * from 视图名称 where deptno=10date
3.建立只读视图select
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; 而后,解析(并优化)合并后的查询语句,并执行查询语句;