SQL Server 中的View(檢視)

VIEW
就是檢視,虛擬一份資料表供使用者查詢
可以多筆查詢結合,簡化查詢流程
 用法也很簡單









USE 中文北風
GO
CREATE VIEW 訂單詳細檢視
AS
 SELECT 訂貨主檔.訂單號碼,客戶.公司名稱,客戶.連絡人
   ,客戶.連絡人職稱, 員工.姓名 AS 負責員工
   ,訂貨主檔.訂單日期,貨運公司.貨運公司名稱 AS 運送方式
   ,訂貨主檔.運費
 FROM 訂貨主檔 INNER JOIN
   客戶 ON 訂貨主檔.客戶編號 = 客戶.客戶編號 INNER JOIN
   員工 ON 訂貨主檔.員工編號 = 員工.員工編號 INNER JOIN
   貨運公司 ON 訂貨主檔.送貨方式 = 貨運公司.貨運公司編號
GO

--當需要詳細檢視時,只需要呼叫:----------------------
SELECT * FROM 訂單詳細檢視
GO
------------------------------------------------------
------------------------------------------------------

CREATE VIEW 全員工資料檢視
AS
 SELECT 員工編號,姓名,職稱,稱呼,出生日期,雇用日期,地址 
   薪資,電話號碼,內部分機號碼,相片,附註,主管
 FROM 員工  
GO

CREATE VIEW 一般員工檢視
AS
 SELECT 員工編號,姓名,職稱,稱呼,雇用日期,內部分機號碼
 FROM 員工
GO


SELECT * FROM 全員工資料檢視;
SELECT * FROM 訂單詳細檢視;
GO
------------------------------------------------------
--修改------------------------------------------------
ALTER VIEW 一般員工檢視
AS
 SELECT 員工編號,姓名,職稱,稱呼,雇用日期,內部分機號碼,主管
 FROM 員工
GO



另外在VIEW表能對底層資料進行修訂
條件為:
  1. 來源必須單一資料表(不得JOIN)
  2. 不能使用GROUP BY
  3. 不能有衍生欄位

SCHEMABINDING
繫結檢視表底層資料表的結構
強化依存關係,不過有些條件:
  1. 語法中不得用 * 號
  2. 語法中的物件需要用兩段式寫法
WITH CHECK OPTION
可獨立存在,不一定要依存SCHMABINDING
在VIEW表中可以對底層資料表進行修改

有時VIEW表會有下WHERE條件,加上這句後
當VIEW表對底層資料表修訂時,可以符合
當初設定的WHERE條件




USE 練練
GO
------------------------------------------------------
CREATE VIEW 巨巨產品檢視
WITH SCHEMABINDING
AS
 SELECT 巨巨.產品編號,巨巨.品名,巨巨.價錢
 FROM dbo.巨巨
GO
------------------------------------------------------
--DROP TABLE 巨巨
--刪不了,因為使用了SCHEMABINDING 參考了 巨巨--
--ALTER TABLE 巨巨 DROP COLUMN 價錢
--改不了,因為使用了SCHEMABINDING 參考了 巨巨.價錢
--DROP VIEW 巨巨產品檢視
------------------------------------------------------
------------------------------------------------------
--可對底層資料表進行修訂--
INSERT INTO 巨巨產品檢視 VALUES(26,'巧克力',50)
GO
------------------------------------------------------
------------------------------------------------------
CREATE VIEW 巨巨40以上產品檢視
AS
 SELECT 巨巨.產品編號,巨巨.品名,巨巨.價錢
 FROM dbo.巨巨
 WHERE 巨巨.價錢 >40
GO
------------------------------------------------------
INSERT INTO 巨巨40以上產品檢視 VALUES(27,'金沙',70)
INSERT INTO 巨巨40以上產品檢視 VALUES(28,'口香糖',10)
GO
--口香糖會 INSERT 進到巨巨表
--儘管View中有條件,還是會INSERT進去
--為避免這種情況,要加上WITH CHECK OPTION
------------------------------------------------------
------------------------------------------------------
ALTER VIEW 巨巨40以上產品檢視
WITH SCHEMABINDING
AS
 SELECT 巨巨.產品編號,巨巨.品名,巨巨.價錢
 FROM dbo.巨巨
 WHERE 巨巨.價錢 >40
 WITH CHECK OPTION
GO
--加上WITH CHECK OPTION就塞不進去了
INSERT INTO 巨巨40以上產品檢視 VALUES(29,'荼葉蛋',8)
GO
-----------------------------------------------------
-----------------------------------------------------


留言

熱門文章