Teradata 查詢指令 (2)

基本介紹

教學目標

初步了解 Teradata 中的視圖 (View)。

重點概念

視圖 (View) 又稱虛擬表,可以是資料表中資料記錄的子集,也可以是資料表中某幾個字段形成的子集,視圖可以參照一張或多張資料表。此外視圖並不另外單獨儲存和複製資料,它只是一個結構而已,此外若當相關資料表定義發生變化時,將不會反映到視圖定欺中,此時將根據需求進行手動同步更新或維護。

限制

  • 不能基於視圖來建立索引,因為視圖只是一個定義,本身並沒有任何資料。
  • 視圖中不能包含 ORDER BY 子句。
  • 衍生和聚合的列必須要有一個 AS 子句指定列名。
  • 若包含資料來自多個資料表,則視圖不能被 UPDATE。
  • 若包含相同或衍生的列,則視圖不能被 UPDATE。
  • 若包含 DISTINCT 或 GROUP BY 子句,則視圖不能被 UPDATE。

特點

  • 提供了一個額外的安全授權層次。
  • 協助控管讀取和修改權限。
  • 如果表格增加了列,該列對視圖無影響。
  • 如果列從資料表中刪除,視圖也不受影響,除非刪除跟該列相關的視圖。
  • 簡單化使用者的存取控制。

聚合

視圖的定義主要儲存在資料字典中,而不是在使用者自己的空間中,實務上常常會建立聚合視圖,主要是透過聚合運算而得到的視圖。

1
2
3
4
5
6
7
8
9
CREATE VIEW Dept_Sales
AS SELECT department_number AS DEPT_NBR
,SUM (salary_amount) AS STOT
,AVG (salary_amount) AS SAVG
,MAX (salary_amount) AS SMAX
,MIN (salary_amount) AS SMIN
FROM Employee
GROUP BY DEPT_NBR;
HAVING AVG(salary_amount) < 50000 ;

最後建議針對每一個資料表建立至少一個視圖,並且根據需求建立相關視圖查詢。

相關資源