--SQL視圖示例(以scott用戶下的四張表為例):--EMP(雇員表):-- EMPNO:雇員編號,由四位數字組成-- ENAME:雇員姓名,由十位字符組成-- JOB:雇員的職位-- MGR:雇員對應的領導編號,領導也是雇員-- HIREDATE:雇員的雇傭日期-- SAL:基本工資,其中有兩位小數,五位整數-- COMM:獎金,傭金-- DEPTNO:雇員所在的部門編號--DEPT(部門表):-- DEPTNO:表示部門編號,由兩位數字組成-- DNAME:部門名稱,最多由14位字符組成-- LOC:部門所在的位置--SALGRADE(工資等級表):-- GRADE:工資的等級-- LOSAL:此等級的最低工資-- HISAL:此等級的最高工資--BONUS(工資表):-- ENAME:雇員姓名-- JOB:雇員職位-- SAL:雇員薪酬-- COMM:雇員的獎金--基本語法: --CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW NAME_VIEW [(ALIAS,......)] --AS SUBQUERY --[WITH CHECK OPTION [CONSTRAINT]] --[WITH READ ONLY] --OR REPLACE:若所建的視圖存在,則自動重建該視圖 --FORCE:不管基表是否存在,Oracle都會自動重建該視圖 --NOGORCE:只有基表都存在,Oracle才會創建該視圖 --ALIAS:為視圖產生的列定義別名 --SUBQUERY:一條完整的select語句 --WITH CHECK OPTION:插入或修改的數據必須滿足視圖定義的約束 --WITH READ ONLY:該視圖上不能進行任何DML操作 ----示例1: --創建視圖(單表) create or replace view emp_view as select empno,ename,deptno from emp --查詢視圖 select * from emp_view; --插入 insert into emp_view(empno,ename,deptno)values (15,'Liam',30); --修改視圖 update emp_view set ename='YAN' where empno=15; --刪除視圖中的數據 delete emp_view where empno=15; --刪除視圖 drop view emp_view;--示例2: --創建視圖(多表) create or replace view empdept_view as select empno,ename,job,sal,emp.deptno,dname from emp join dept on emp.deptno = dept.deptno --查詢視圖 select * from empdept_view; --插入數據,向emp表中插入數據, insert into empdept_view(empno,ename,sal)values(7777,'liamyan',1000); --插入數據,向dept表中插入數據.失敗,錯誤報告:無法通過連接視圖修改多個基表 insert into empdept_view(deptno,dname)values(50,'baidu'); --插入數據,同時向兩個表中插入數據.失敗,錯誤報告:無法通過連接視圖修改多個基表 insert into empdept_view(empno,ename,deptno,dname,sal)values(7777,'LiamYan',30,'SALES',1000); --修改視圖,修改emp表中的數據 update empdept_view set ename='Yan' where empno=7839; --修改視圖,修改dept表中的數據.失敗,錯誤報告:無法修改與非鍵值保存表對應的列 update empdept_view set dname='baidu' where ename='Yan'; --刪除視圖中的數據 delete empdept_view where ename='Yan'; --刪除視圖 drop view empdept_view;--示例3 --創建視圖 create or replace view dept_sum_view (name,minsal,maxsql,avgsal) as select d.dname,min(e.sal),max(e.sal),avg(e.sal) from dept d,emp e where d.deptno= e.deptno group by d.dname; --查詢視圖 select * from dept_sum_view; --刪除視圖 drop view dept_sum_view; --查詢視圖定義select view_name,text from user_views;
新聞熱點
疑難解答