視圖三大分類
- 一般視圖:僅儲存 SELECT 定義與中繼資料,不儲存資料。
- 索引視圖:建立叢集索引將結果集物質化儲存。
- 分割視圖:跨多張結構相同表聯合查詢,模擬分割表。
一般視圖建立語法與選項
CREATE VIEW [schema.]view_name [(column[,...n])]
[WITH [,...n]] AS select_statement
[WITH CHECK OPTION];
::= { ENCRYPTION | SCHEMABINDING | VIEW_METADATA }
選項詳解:
- `ENCRYPTION`:加密定義,不可修改,需自備腳本。
- `SCHEMABINDING`:綁定底層結構,防止被引用表結構變更破壞視圖。
- `VIEW_METADATA`:向客戶端暴露視圖自身中繼資料而非底層表,讓視圖像表一樣可更新。
- `WITH CHECK OPTION`:限制透過視圖修改的資料必須符合視圖 WHERE 條件。
建立限制
- 無 `TOP` 不得用 `ORDER BY`(Hack:`TOP 100 PERCENT`)。
- Schema 內名稱唯一、嵌套 ≤ 32 層、禁用 `COMPUTE`/`INTO`、不可建立於暫存表、不可查全文索引。
簡單範例
CREATE VIEW v_Test_View1 AS SELECT TOP 100 * FROM HumanResources.Employee;
SELECT * FROM v_Test_View1;
索引視圖與分割視圖後續文章展開。