如下示例:
select a.deptno, a.avg_sal, b.grade
from (select deptno, avg(sal) avg_sal from emp group by deptno) a, salgrade b
where a.avg_sal between b.losal and b.hisal;
为什么使用视图?,因为需求决定以上语句需要在多个地方使用,如果频繁的拷贝以上代码,会给维护带来成本,视图可以解决这个问题。
create view v_dept_avg_sal as select a.deptno, a.avg_sal, b.grade from (select deptno, avg(sal) avg_sal from emp group by deptno) a, salgrade b where a.avg_sal between b.losal and b.hisal;
出现错误,权限不够,如何查询某个用户拥有的权限?
select * from session_privs;
如何切换用户?
conn system/bjpowernode
如何让scott以dba的角色登陆?
conn scott/tiger as sysdba
如何对scott用户授权?
切换到system用户
conn system/bjpowernode
在system用户下为scott授权,授予scott创建视图的权利
grant create view to scott;
再次切换到scott用户下,查看是否拥有创建视图的权利
conn scott/tiger
select * from session_privs;
Scott用户已经拥有了创建视图的权利。
开始创建视图:
如何使用视图?
视图的使用和表的使用是一致,但是视图不能进行增删改,因为视图是表的结果,采用视图主要是为了操作的方便性,重复使用的结果集考虑建成视图,创建视图,一般是对不经常修改的表创建的。
删除视图
drop view V_DEPT_AVG_SAL;