如下示例:
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;