建立在表|結果集|視圖上的虛擬表,有以下作用:
1、簡化:select查詢語句
2、重用:封裝select語句 命名
3、隱藏:內部細節
4、區分:相同數據不同查詢
不是所有的用戶都有創建視圖的權限
1、前提:create view -->組 connect resource dba
2、授權 -->sqlplus/nolog
a)、sys登錄 conn sys/123456 as sysdba
b)、授權:grant dba to scott;
回收:revoke dba from scott;
c)、重新登錄
語法:create or replace view 視圖名 as select語句[with read only];
要求:所有列必須存在名稱。
對視圖的刪除不會刪除原有表的數據
drop view 視圖名;
求部門經理人中平均薪水最低的部門名稱
--部門經理人 -->mgrcreateorreplaceview vw_emp_mgr asselectdistinct mgr from emp
where mgr isnotnullwithread only;--部門經理人的薪水createorreplaceview vw_emp_mgr_sal asselect*from emp
where empno in(select mgr from vw_emp_mgr)withread only;--按部門平均createorreplaceview vw_emp_sal_group asselect deptno,avg(sal)
avgsal from vw_emp_mgr_sal groupby deptno withread only;--過濾組--找出最低的平均薪水--使用第三個視圖selectmin(avgsal)from vw_emp_sal_group
--使用第二個視圖selectmin(avg(sal)) minsal from vw_emp_mgr_sal groupby deptno;--獲取部門編號及平均薪水select*from vw_emp_sal_group
where avgsal =(selectmin(avg(sal)) minsal from vw_emp_mgr_sal groupby
deptno);--部門名稱select dname
from vw_emp_sal_group vw, dept d
where vw.deptno = d.deptno
and avgsal =(selectmin(avg(sal)) minsal from vw_emp_mgr_sal groupby
deptno);