Presentation is loading. Please wait.

Presentation is loading. Please wait.

BY OX. 檢視表與資料表的差異性 查詢 (query) 檢視表 (View) 的紀錄,是經由查詢 (query) 而來,而檢 視表的資料來源可以是單一資料表或是多資料表,甚 至其他檢視表 但檢視表中的紀錄只存在資料表中.

Similar presentations


Presentation on theme: "BY OX. 檢視表與資料表的差異性 查詢 (query) 檢視表 (View) 的紀錄,是經由查詢 (query) 而來,而檢 視表的資料來源可以是單一資料表或是多資料表,甚 至其他檢視表 但檢視表中的紀錄只存在資料表中."— Presentation transcript:

1 BY OX

2 檢視表與資料表的差異性 查詢 (query) 檢視表 (View) 的紀錄,是經由查詢 (query) 而來,而檢 視表的資料來源可以是單一資料表或是多資料表,甚 至其他檢視表 但檢視表中的紀錄只存在資料表中

3 檢視表的優點 增加可讀性 資料安全及保密性 降低查詢的複雜度 方便程式維護

4 CREATE VIEW (Basic) CREATE VIEW view_name AS Select_statement

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

6 CREATE VIEW (Adv.) CREATE VIEW 時 不可使用 INTO 、 ORDER BY 、 COMPTE 或 COMPTE BY 若要使用上述子句 可在實際使用時再設定 Ex: Select * from MyView ORDER BY myco12

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

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

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

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

11 結構描述繫結 (schema.object) 限制此檢視表所用到的資料表或檢視表,都不允許用 ALTER 更改設計,或用 DROP 將之刪除 CREATE VIEW 下單記錄 _VIEW WITH SCHEMABINDING AS SELECT 下單日期, 客戶名稱, 地址 FROM dbo. 訂單, dbo. 客戶 WHERE 訂單. 客戶編號 = 客戶. 客戶編號

12 檢查檢視表的資料變動 若在 CREATE VIEW 敘述最後面加上 WITH CHECK OPTION CREATE VIEW CheckOption AS SELECT * FROM 書籍 WHERE 價格 > 400 AND 價格 < 600 WITH CHECK OPTION GO SELECT * FROM CheckOption

13 UPDATE CheckOption SET 價格 = 350 WHERE 書籍編號 = 3

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

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

16 修改並去除加密 ALTER VIEW 客戶聯絡電話 ( 客戶, 聯絡人姓名, 聯絡 電話 ) AS SELECT 客戶名稱, 聯絡人, 電話 FROM 客戶

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

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

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

20 CREATE VIEW 尾牙參加人員名單 AS SELECT 姓名, 地址 FROM 員工 UNION SELECT 聯絡人, 地址 FROM 客戶

21 編輯檢視表紀錄之前提 若該欄位源自計算欄位或是匯總函數則不可在檢視表 中修改 若來源資料表不必 ( 也不可 ) 輸入的欄位,例如識別欄 位或 TIMESTAMP 型別之欄位,在檢視表中也不可修 改 檢視表中更動的內容,更動的內容最好不要影響多個 資料表

22 刪除 仿造資料表刪除之方式,將原本資料表名稱改成檢視 表名稱 DELETE 客戶聯絡電話 WHERE 客戶 = ' 天天書局 '

23 新增 INSERT 客戶聯絡電話 ( 客戶, 聯絡人姓名, 聯絡電話 ) VALUES ( ' 企鵝書局 ', ' 陳佑淵 ', '0272114517‘) PS. 注意欄位數與欄位限制

24 刪除檢視表 DROP VIEW [,…n] DROP VIEW 客戶聯絡電話, 下單記錄 _view_1


Download ppt "BY OX. 檢視表與資料表的差異性 查詢 (query) 檢視表 (View) 的紀錄,是經由查詢 (query) 而來,而檢 視表的資料來源可以是單一資料表或是多資料表,甚 至其他檢視表 但檢視表中的紀錄只存在資料表中."

Similar presentations


Ads by Google