How To *View

Download Report

Transcript How To *View

BY OX
檢視表與資料表的差異性
 檢視表(View) 的紀錄,是經由查詢(query)而來,而檢
視表的資料來源可以是單一資料表或是多資料表,甚
至其他檢視表
 但檢視表中的紀錄只存在資料表中
檢視表的優點
 增加可讀性
 資料安全及保密性
 降低查詢的複雜度
 方便程式維護
CREATE VIEW (Basic)
 CREATE VIEW view_name
 AS
 Select_statement
CREATE VIEW (Adv.)
 CREATE VIEW view_name [(column [,..n] ) ]
 [WITH {Encryption | Schemabinding} [,…n]]
 AS
 Select_statement
 [WITH CHECK OPTION]
CREATE VIEW (Adv.)
 CREATE VIEW 時 不可使用 INTO、ORDER BY、
COMPTE 或 COMPTE BY
 若要使用上述子句 可在實際使用時再設定
 Ex:
 Select * from MyView
 ORDER BY myco12
建立檢視表
 SELECT 下單日期, 客戶名稱, 地址
 FROM 訂單, 客戶
 WHERE 訂單.客戶編號 = 客戶.客戶編號






---------------------------------------------------------------CREATE VIEW 下單記錄
AS
SELECT 下單日期, 客戶名稱, 地址
FROM 訂單, 客戶
WHERE 訂單.客戶編號 = 客戶.客戶編號
指定檢視表的欄位別名
CREATE VIEW 下單記錄_VIEW_1
AS
SELECT 下單日期, 客戶名稱, 地址
FROM 訂單, 客戶
WHERE 訂單.客戶編號 = 客戶.客戶編號
GO
SELECT * FROM 下單記錄_VIEW_1
指定檢視表的欄位別名
CREATE VIEW 下單記錄_VIEW_2 (日期, 下單客戶, 客
戶地址)
AS
SELECT 下單日期, 客戶名稱, 地址
FROM 訂單, 客戶
WHERE 訂單.客戶編號 = 客戶.客戶編號
GO
SELECT * FROM 下單記錄_VIEW_2
為 檢視表加密
CREATE VIEW 客戶聯絡電話
WITH ENCRYPTION
AS
SELECT 客戶名稱, 聯絡人, 電話
FROM 客戶
========
USE 練習01
SELECT * FROM sys.syscomments
結構描述繫結(schema.object)
限制此檢視表所用到的資料表或檢視表,都不允許用
ALTER 更改設計,或用DROP將之刪除
CREATE VIEW 下單記錄_VIEW
WITH SCHEMABINDING
AS
SELECT 下單日期, 客戶名稱, 地址
FROM dbo.訂單, dbo.客戶
WHERE 訂單.客戶編號 = 客戶.客戶編號
檢查檢視表的資料變動
若在 CREATE VIEW 敘述最後面加上WITH CHECK
OPTION
CREATE VIEW CheckOption
AS
SELECT *
FROM 書籍
WHERE 價格 > 400 AND 價格 < 600
WITH CHECK OPTION
GO
SELECT * FROM CheckOption
 UPDATE CheckOption
 SET 價格 = 350
 WHERE 書籍編號 = 3
修改檢視表
 ALTER VIEW view_name [(column [,..n] ) ]
 [WITH {Encryption | Schemabinding} [,…n]]
 AS
 Select_statement
 [WITH CHECK OPTION]
原始加密
 CREATE VIEW 客戶聯絡電話
 WITH ENCRYPTION
 AS
 SELECT 客戶名稱, 聯絡人, 電話
 FROM 客戶
修改並去除加密
 ALTER VIEW 客戶聯絡電話 (客戶, 聯絡人姓名, 聯絡
電話)
 AS
 SELECT 客戶名稱, 聯絡人, 電話
 FROM 客戶
原始檢視表
 CREATE VIEW VIEW_CheckOption
 AS
 SELECT *
 FROM 書籍
 WHERE 價格 > 400 AND 價格 < 600
 WITH CHECK OPTION
修正售價
 ALTER VIEW VIEW_CheckOption
 AS
 SELECT *
 FROM 書籍
 WHERE 價格 > 300
 WITH CHECK OPTION
尾牙名單 ~ 使用UNION
 結合 員工與客戶資料表 建立VIEW
 員工之欄位包含 姓名 & 地址
 客戶之欄位包含 聯絡人&地址
 CREATE VIEW 尾牙參加人員名單
 AS
 SELECT 姓名, 地址 FROM 員工
 UNION
 SELECT 聯絡人, 地址 FROM 客戶
編輯檢視表紀錄之前提
 若該欄位源自計算欄位或是匯總函數則不可在檢視表
中修改
 若來源資料表不必(也不可)輸入的欄位,例如識別欄
位或TIMESTAMP型別之欄位,在檢視表中也不可修
改
 檢視表中更動的內容,更動的內容最好不要影響多個
資料表
刪除
 仿造資料表刪除之方式,將原本資料表名稱改成檢視
表名稱
 DELETE 客戶聯絡電話
 WHERE 客戶 = '天天書局'
新增
 INSERT 客戶聯絡電話 (客戶, 聯絡人姓名, 聯絡電話)
 VALUES ( '企鵝書局', '陳佑淵', '0272114517‘)
 PS. 注意欄位數與欄位限制
刪除檢視表
 DROP VIEW [,…n]
 DROP VIEW 客戶聯絡電話, 下單記錄_view_1