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