240 likes | 422 Views
How To “View”. BY OX. 檢視表與資料表的差異性. 檢視表 ( View ) 的紀錄,是經由 查詢 (query) 而來,而檢視表的資料來源可以是單一資料表或是多資料表,甚至其他檢視表 但檢視表中的紀錄只存在資料表中. 檢視表的 優點. 增加可讀性 資料安全及保密 性 降低查詢的複雜度 方便程式維護. CREATE VIEW (Basic). CREATE VIEW view_name AS Select_statement. CREATE VIEW (Adv.).
E N D
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、ORDERBY、COMPTE 或 COMPTEBY • 若要使用上述子句 可在實際使用時再設定 • 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