BY OX. 檢視表與資料表的差異性 查詢 (query) 檢視表 (View) 的紀錄,是經由查詢...

Post on 19-Dec-2015

233 views 5 download

Transcript of BY OX. 檢視表與資料表的差異性 查詢 (query) 檢視表 (View) 的紀錄,是經由查詢...

How To “View”BY OX

檢視表與資料表的差異性檢視表 (View) 的紀錄,是經由查詢 (query) 而來,

而檢視表的資料來源可以是單一資料表或是多資料表,甚至其他檢視表

但檢視表中的紀錄只存在資料表中

檢視表的優點增加可讀性

資料安全及保密性

降低查詢的複雜度

方便程式維護

CREATE VIEW (Basic)CREATE VIEW view_nameASSelect_statement

CREATE VIEW (Adv.)CREATE VIEW view_name [(column [,..n] ) ][WITH {Encryption | Schemabinding} [,…n]]ASSelect_statement[WITH CHECK OPTION]

CREATE VIEW (Adv.)CREATE VIEW 時 不可使用 INTO 、 ORDER

BY 、 COMPTE 或 COMPTE BY

若要使用上述子句 可在實際使用時再設定Ex: Select * from MyViewORDER BY myco12

建立檢視表 SELECT 下單日期 , 客戶名稱 , 地址FROM 訂單 , 客戶WHERE 訂單 . 客戶編號 = 客戶 . 客戶編號

----------------------------------------------------------------CREATE VIEW 下單記錄AS SELECT 下單日期 , 客戶名稱 , 地址FROM 訂單 , 客戶WHERE 訂單 . 客戶編號 = 客戶 . 客戶編號

指定檢視表的欄位別名CREATE VIEW 下單記錄 _VIEW_1AS SELECT 下單日期 , 客戶名稱 , 地址FROM 訂單 , 客戶WHERE 訂單 . 客戶編號 = 客戶 . 客戶編號GO

SELECT * FROM 下單記錄 _VIEW_1

指定檢視表的欄位別名CREATE VIEW 下單記錄 _VIEW_2 ( 日期 , 下單客戶 ,

客戶地址 )AS SELECT 下單日期 , 客戶名稱 , 地址FROM 訂單 , 客戶WHERE 訂單 . 客戶編號 = 客戶 . 客戶編號GO

SELECT * FROM 下單記錄 _VIEW_2

為 檢視表加密CREATE VIEW 客戶聯絡電話WITH ENCRYPTIONAS SELECT 客戶名稱 , 聯絡人 , 電話FROM 客戶========USE 練習 01SELECT * FROM sys.syscomments

結構描述繫結 (schema.object)限制此檢視表所用到的資料表或檢視表,都不允許用

ALTER 更改設計,或用 DROP 將之刪除

CREATE VIEW 下單記錄 _VIEWWITH SCHEMABINDINGAS SELECT 下單日期 , 客戶名稱 , 地址FROM dbo. 訂單 , dbo. 客戶WHERE 訂單 . 客戶編號 = 客戶 . 客戶編號

檢查檢視表的資料變動若在 CREATE VIEW 敘述最後面加上 WITH CHECK OPTION

CREATE VIEW CheckOptionAS SELECT * FROM 書籍WHERE 價格 > 400 AND 價格 < 600 WITH CHECK OPTIONGO

SELECT * FROM CheckOption

UPDATE CheckOptionSET 價格 = 350 WHERE 書籍編號 = 3

修改檢視表ALTER VIEW view_name [(column [,..n] ) ][WITH {Encryption | Schemabinding} [,…n]]ASSelect_statement[WITH CHECK OPTION]

原始加密CREATE VIEW 客戶聯絡電話WITH ENCRYPTIONAS SELECT 客戶名稱 , 聯絡人 , 電話FROM 客戶

修改並去除加密ALTER VIEW 客戶聯絡電話 ( 客戶 , 聯絡人姓名 ,

聯絡電話 )ASSELECT 客戶名稱 , 聯絡人 , 電話FROM 客戶

原始檢視表CREATE VIEW VIEW_CheckOptionAS SELECT * FROM 書籍WHERE 價格 > 400 AND 價格 < 600WITH CHECK OPTION

修正售價ALTER VIEW VIEW_CheckOption AS SELECT * FROM 書籍WHERE 價格 > 300WITH CHECK OPTION

尾牙名單 ~ 使用 UNION結合 員工與客戶資料表 建立 VIEW員工之欄位包含 姓名 & 地址客戶之欄位包含 聯絡人 & 地址

CREATE VIEW 尾牙參加人員名單ASSELECT 姓名 , 地址 FROM 員工UNIONSELECT 聯絡人 , 地址 FROM 客戶

編輯檢視表紀錄之前提若該欄位源自計算欄位或是匯總函數則不可在檢視表

中修改

若來源資料表不必 ( 也不可 ) 輸入的欄位,例如識別欄位或 TIMESTAMP 型別之欄位,在檢視表中也不可修改

檢視表中更動的內容,更動的內容最好不要影響多個資料表

刪除仿造資料表刪除之方式,將原本資料表名稱改成檢視

表名稱

DELETE 客戶聯絡電話WHERE 客戶 = ' 天天書局 '

新增INSERT 客戶聯絡電話 ( 客戶 , 聯絡人姓名 , 聯絡

電話 )VALUES ( ' 企鵝書局 ', ' 陳佑淵 ', '0272114517‘)

PS. 注意欄位數與欄位限制

刪除檢視表DROP VIEW [,…n]

DROP VIEW 客戶聯絡電話 , 下單記錄 _view_1