4-1 資料庫共通的語言-SQL

4-2 SQL 的歷史

4-3 SQL 的基本語言

4-4 SQL 物件(SQL Object)

4-5 資料型態

4-6 資料型態轉換

4-7 基本表格(BASED TABLE)

4-8 虛擬欄位和虛擬表格

4-9 資料型態轉換函數

4-10 SQL 中常用的函數

4-11 SELECT 指令小結

4-12 視觀表格(VIEW)

4-13 基本表格、視觀表格的拷貝

 

 

   
 

視觀表格(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。