SQL Server檢視


在SQL Server中,檢視是被儲存在資料庫中的預寫查詢。檢視是由一個SELECT語句,當你執行檢視,會看到它的結果,就像開啟一個表時一樣。 有些人喜歡把檢視稱作為虛擬表。這是因為,一個檢視可以拉動多個表,並彙總資料在一起並將其顯示,就好像它是一個單一的表。

檢視的優點

當有多個使用者提供不同級別的存取許可權,需要看到在資料庫中(但不一定是所有資料)中的資料的各不同部分的檢視,可能是有用的。檢視可以執行以下操作:

  • 限制存取特定的表中的行
  • 限制存取特定的表中的列
  • 從多個表中加入列,並呈現出來,好像他們是一個單一的表的一部分
  • 呈現匯總的資訊(如COUNT函式的結果)

檢視語法

建立一個檢視通過使用CREATE VIEW語句,其次是SELECT語句。

?
CREATE VIEW ViewName AS
SELECT ...

建立檢視

我們以前使用的查詢設計器建立兩個表中選擇資料的查詢。現在讓我們在查詢並將其儲存為一個名為“ToDoList”的檢視。基本上,我們需要做的就是把CREATE VIEW ToDoList的AS查詢,像這樣的面前:

?
CREATE VIEW ToDoList AS
SELECT	Tasks.TaskName, Tasks.Description
FROM	Status INNER JOIN
			Tasks ON Status.StatusId = Tasks.StatusId
WHERE	(Status.StatusId = 1)

一旦執行該指令碼,重新整理瀏覽檔案夾在左窗格中,你會看到檢視就在左窗格中:

Screenshot of view

執行檢視

所以,現在你已經建立的檢視,你可以簡單地檢視結果選擇它就像你會選擇任何表。而不是輸入出大SELECT語句的INNER JOIN等等,可以簡單地鍵入select* from todolist,它會執行完整的查詢:
Screenshot of view results

註:也可以在檢視上單擊滑鼠右鍵,並選擇 "Select Top 1000 Rows".

資料更新

該檢視將返回最新的資料。如果表中的資料發生變化時,檢視的結果會改變過。所以,如果要新增新任務以及狀態 "To Do", 下一次執行來看,這將包括在結果集中的新紀錄。

修改檢視

可以通過使用ALTER而不是CREATE修改現有的檢視。

因此,如果我們想要更改檢視使用StatusName欄位,而不是StatusId,我們可以這樣做:

?
ALTER VIEW ToDoList AS
SELECT	Tasks.TaskName, Tasks.Description
FROM	Status INNER JOIN
			Tasks ON Status.StatusId = Tasks.StatusId
WHERE	(Status.StatusName = 'To Do')

註:使用查詢設計器也可以右鍵單擊檢視,然後選擇設計來修改您的檢視。

正如你所看到的,檢視讓您儲存查詢,以便可以做一個SELECT,再次執行它也會比較簡單。但它們的確有其局限性。它們允許選擇資料,但不允許執行任何業務邏輯,如條件語句等。 要做到這一點需要一個儲存過程。