|
|
|
|
|
|
視觀表格(View) 是 SQL
語言提供的一種特殊型態的表格,它可以由一個基本表格中選取的某些資料列和欄位組成,也可以由幾個表格中滿足一定條件的資料組成。視觀表格如同是基本表格窗口,它反映了一個或多個基本表格的局部資料,但視觀表格本身並不實際存放資料,資料都來自於基本表格,視觀表格僅是對應基本表格的部分資料,因此視觀表格只是一個虛擬表格。視觀表格建立後,使用者可以把它當作基本表格一樣查詢資料,在某些情況下,還可以對視觀表進行修改和插入操作。
如果視觀表格(View) 是利用以下的方式所產生:關聯、集合運算、群組函數、GROUP BY 子句、CONNECT BY 或 START
WITH 子句和
DISTINCT,則視觀表格上只能做查詢而不能執行插入、修改和刪除指令。視觀表格的使用與基本表格類似,要有視觀表格名及對應的欄位及資料。使用視觀表格不僅可以簡化使用者的操作、隱藏資料的複雜性、為資料提供不同的觀點、並可以保證資料的安全。
|
|
|
建立視觀表格(View)-CREATE VIEW
CREATE VIEW <視觀表格名> [<視觀表格欄位名串列>]
AS SELECT 指令
[WITH CHECK OPTION];
建立視觀表格不同於建立基本表格,它是使用 CREATE VIEW 指令,其中:<視觀表格名> 是新建視觀表格的名字,SELECT
指令是一個查詢指令,它從基本表格中選擇滿足一定條件的資料。當 CREATE VIEW 中的 SELECT
指令確定後,該視觀表格從哪個表格選擇哪些資料也就確定了。
|
|
建立個以部門 30
的員工的視觀表格 DEPT30。 |
|
|
|
若使用者企圖對上面的視觀表格執行以下的操作,系統會出現錯誤的警告: |
|
|
|
因為視觀表格 DEPT30 定義中有 [WITH CHECK
OPTION] 選項參數,所以當使用者對 DEPT30 進行任何更新時,必須滿足原 SELECT 敘述的條件(WHERE DEPTNO=30)。而上述例子中的操作企圖將
DEPTNO 改成 20,所以就會發生錯誤。 |
|
|
|
|
視觀表格的使用如同基本表格一樣,使用者可以查詢其中的資料,在某些情況下可以對視觀表格進行修改、刪除或插入資料操作,其操作方式與一般基本表格相同。
我們可以利用一般的查詢基本表格的方式來查詢視觀表格:
|
|
查詢視觀表格 SALESMAN
中薪資大於 1450 的員工。 |
|
|
|
|
|
查詢視觀表格 NEWEMP1
的結構。 |
|
|
|
將視觀表格 SALESMAN 中,薪資(SAL) 小於 1300 的員工,每人加薪 $500。
|
|
|
|
利用 UPDATE 指令更改
SALESMAN,因為視觀表格 SALESMAN 是由表格 EMP 中滿足條件 (JOB='SALESMAN')
的資料所組成,所以事實上是改變了 EMP 表格中的內容。 |
|
|
|
我們可以利用刪除一般基本表格資料的方式來刪除視觀表格的資料: |
|
|
|
刪除視觀表格 SALESMAN
中薪資(SAL) 小於 $1550 的員工。 |
|
|
|
利用 DELETE 指令更改
SALESMAN,但事實上是改變了 EMP 表格中的內容。 |
|
|
|
此外,視觀表格不只可以定義於一個基本表格上,也可以定義於兩個或多個基本表格上。 |
|
|
|
將表格 EMP 與 DEPT
進行關聯並建立一個薪資(SAL) 低於 1800 的員工與所在部門等欄位的視觀表格 EMP_DEPT。 |
|
|
|
我們可利用查詢(SELECT)
來核對之: |
|
|
|
|
|
|
|
廢除視觀表格-DROP VIEW
DROP VIEW <視觀表名>;
|
|
廢除視觀表格
SALESMAN。 |
|
|
|
|