SQL Server視圖的優(yōu)點
視圖可以執(zhí)行以下操作:
- 限制訪問特定的表中的行
- 限制訪問特定的表中的列
- 從多個表中加入列,并呈現(xiàn)出來,好像他們是一個單一的表的一部分
- 呈現(xiàn)匯總的信息(如COUNT函數(shù)的結果)
SQL Server視圖語法
通過使用 CREATE VIEW 語句創(chuàng)建一個視圖,其次是 SELECT 語句,如下:
CREATE VIEW ViewName AS SELECT ...
SQL Server創(chuàng)建視圖
我們以前使用的查詢設計器創(chuàng)建兩個表中選擇數(shù)據(jù)的查詢。
現(xiàn)在讓我們將查詢保存為一個名為 “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)
運行該腳本,在左窗格中刷新瀏覽文件夾,你會看到視圖就在左窗格中:
SQL Server 運行視圖
創(chuàng)建視圖后,就可以簡單地查看結果,就像你會選擇任何表。
可以簡單地鍵入 select * from todolist,它會運行完整的查詢,而不是輸入出大量的 SELECT 語句的 INNER JOIN :
注:也可以在視圖上單擊鼠標右鍵,并選擇 "Select Top 1000 Rows".
數(shù)據(jù)更新
該視圖將返回最新的數(shù)據(jù)。
如果表中的數(shù)據(jù)發(fā)生變化時,視圖的結果會改變過;所以,如果要添加新任務以及狀態(tài) "To Do", 下一次運行來看,這將包括在結果集中的新紀錄。
修改視圖
通過使用 ALTER 修改現(xiàn)有的視圖,而不是 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,再次運行它也會比較簡單。
但它們的確有其局限性:它們允許選擇數(shù)據(jù),但不允許執(zhí)行任何業(yè)務邏輯,如條件語句等。
在下一節(jié)中我們通過學習存儲過程來做到這點。
更多建議: