天天看點

視圖

視圖(view)實際上是一張或者多張表上的預定義查詢,這些表稱為基表。從視圖中

查詢資訊與從表中查詢資訊的方法完全相同。隻需要簡單的

select…from 即可。

視圖具有以下優點:

1.

可以限制使用者隻能通過視圖檢索資料。這樣就可以對最終使用者屏蔽建表時底層的基

表。

2.

可以将複雜的查詢儲存為視圖。可以對最終使用者屏蔽一定的複雜性。

3.

限制某個視圖隻能通路基表中的部分列或者部分行的特定資料。這樣可以實作一定

的安全性。

4.

從多張基表中按一定的業務邏輯抽出使用者關心的部分,形成一張虛拟表。

文法結構:建立視圖

create [or replace]

[{force|noforce}] view view_name

as

select查詢

[with read only

constraint]

文法解析:

1. or replace:如果視圖已經存在,則替換舊視圖。

force:即使基表不存在,也可以建立該視圖,但是該視圖不能正常使用,當基表

建立成功後,視圖才能正常使用。

noforce:如果基表不存在,無法建立視圖,該項是預設選項。

4. with read

only:預設可以通過視圖對基表執行增删改操作,但是有很多在基表上

的限制(比如:基表中某列不能為空,但是該列沒有出現在視圖中,則不能通過視

圖執行

insert 操作),with read only

說明視圖是隻讀視圖,不能通過該視圖進行

增删改操作。現實開發中,基本上不通過視圖對表中的資料進行增删改操作。

案例 3:基于 emp 表和 dept

表建立視圖

代碼示範:視圖

sql> create or replace view empdetail

2 as

select empno,ename,job,hiredate,emp.deptno,dname

4 from emp join dept on

emp.deptno=dept.deptno

5 with read only

6 /

view created

sql> select * from empdetail; ①

empno ename job hiredate

deptno dname

7369 smith clerk 17-12 月-80 20 research

7499 allen salesman 20-2 月 -81 30 sales

7521 ward

salesman 22-2 月 -81 30 sales

7566 jones manager 02-4 月

-81 20 research

7654 martin salesman 28-9 月 -81 30

sales

7698 blake manager 01-5 月 -81 30 sales

7782

clark manager 09-6 月 -81 10 accounting

7788 scott analyst

19-4 月 -87 20 research

7839 king president 17-11 月-81

10 accounting

7844 turner salesman 08-9 月 -81 30 sales

7876 adams clerk 23-5 月 -87 20 research

7900 james

clerk 03-12 月-81 30 sales

7902 ford analyst 03-12 月-81

20 research

7934 miller clerk 23-1 月 -82 10 accounting

14 rows selected

代碼解析:

對視圖可以像表一樣進行查詢。該視圖中隐藏了員工的工資。

删除視圖可以使用“drop view 視圖名稱”,删除視圖不會影響基表的資料