oracle中的视图VIEW
一、VIEW?
view=table+部分table+view(部分),只是一个sql语句而已,不像表格有对应的结构存储在数据库中。
使用视图可以1)可以封装sql语句,简化sql
2)可以区分权限
create view v_10 as select * from emp where deptno=10;
create view v_20 as select * from emp where deptno=20;
create view v_30 as select * from emp where deptno=30;
这样每个部门操作属于自己的view
二、创建view
在使用创建语句前,必须要有创建的权限 :
conn / as sysdba;
grant create view to scott(用户名);
1.简单view
create or replace view v_10 as select * from emp where deptno=10;
2.复杂view
create or replace view v_min as select min(sal) amin from emp; //amin:必须取别名
create or replace view v_50 as select ename,sal from emp where deptno=(select deptno from dept where dname='SALES');
create view v_11 as select a.empno,b.dname from v_10 a,dept b where a.deptn
o=b.deptno;//视图和基本表组成
复杂view不可以进行insert等ddl操作 ,原因:对view进行ddl操作时,会将ddl语句转化到原来对应的table进行操作,由于定义view时,是有一些自定义字段,而在对应的table不存在所以会出错
特殊: 简单view中加入了read only属性,则也不能进行ddl操作
create view v10 as select * from emp where deptno=10 with read only;
存在伪列 rownum,rowid