如下示例:
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;
為什么使用視圖?,因為需求決定以上語句需要在多個地方使用,如果頻繁的拷貝以上代碼,會給維護(hù)帶來成本,視圖可以解決這個問題。
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;
出現(xiàn)錯誤,權(quán)限不夠,如何查詢某個用戶擁有的權(quán)限?
select * from session_privs;
如何切換用戶?
conn system/bjpowernode
如何讓scott以dba的角色登陸?
conn scott/tiger as sysdba
如何對scott用戶授權(quán)?
切換到system用戶
conn system/bjpowernode
在system用戶下為scott授權(quán),授予scott創(chuàng)建視圖的權(quán)利
grant create view to scott;
再次切換到scott用戶下,查看是否擁有創(chuàng)建視圖的權(quán)利
conn scott/tiger
select * from session_privs;
Scott用戶已經(jīng)擁有了創(chuàng)建視圖的權(quán)利。
開始創(chuàng)建視圖:
如何使用視圖?
視圖的使用和表的使用是一致,但是視圖不能進(jìn)行增刪改,因為視圖是表的結(jié)果,采用視圖主要是為了操作的方便性,重復(fù)使用的結(jié)果集考慮建成視圖,創(chuàng)建視圖,一般是對不經(jīng)常修改的表創(chuàng)建的。
刪除視圖
drop view V_DEPT_AVG_SAL;