Oracle教程
Oracle练习题

Oracle视图

如下示例:

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/sxbdqn

如何让scott以dba的角色登陆?

conn scott/tiger as sysdba

如何对scott用户授权?

切换到system用户
conn system/sxbdqn
在system用户下为scott授权,授予scott创建视图的权利
grant create view to scott;
再次切换到scott用户下,查看是否拥有创建视图的权利
conn scott/tiger
select * from session_privs;

Scott用户已经拥有了创建视图的权利。

开始创建视图:

如何使用视图?

视图的使用和表的使用是一致,但是视图不能进行增删改,因为视图是表的结果,采用视图主要是为了操作的方便性,重复使用的结果集考虑建成视图,创建视图,一般是对不经常修改的表创建的。

删除视图

drop view V_DEPT_AVG_SAL;