檢視表 是虛擬資料表,儲存查詢定義而非實體資料。四大優勢:
CREATE VIEW [結構描述.]檢視表名稱
[ (資料行別名 [,...n]) ]
[ WITH <檢視表屬性> [,...n] ]
AS SELECT 陳述式
[ WITH CHECK OPTION ]
範例:建立專案資訊檢視表
USE company;
GO
CREATE VIEW 專案資訊檢視表 AS
SELECT
a.專案名稱,
b.客戶名稱,
c.姓名 AS 員工姓名,
a.開始日期,
a.預計工期
FROM project AS a
INNER JOIN customer AS b ON a.客戶編號 = b.客戶編號
INNER JOIN employee AS c ON a.負責人編號 = c.編號;
GO
ALTER VIEW [結構描述.]檢視表名稱
[ (資料行別名 [,...n]) ]
[ WITH <檢視表屬性> [,...n] ]
AS SELECT 陳述式
[ WITH CHECK OPTION ]
DROP VIEW [結構描述.]檢視表名稱 [,...n]
-- 方法一:系統預存程序
EXEC sp_helptext '檢視表名稱';
-- 方法二:目錄檢視
SELECT definition FROM sys.sql_modules
WHERE object_id = OBJECT_ID('檢視表名稱');
符合以下條件的檢視表可直接 INSERT/UPDATE/DELETE 影響基底資料表:
WITH CHECK OPTION 保護的可更新檢視表)DISTINCT、GROUP BY、聚合函數、UNION 等
實務建議:複雜報表查詢建立檢視表;資料維護操作建議直接針對基底資料表,或使用 INSTEAD OF 觸發器在不可更新檢視表上實現自訂更新邏輯。