SQL?server中視圖(view)創(chuàng)建、修改與刪除
一、視圖概述:
視圖是一種常用的數(shù)據(jù)庫(kù)對(duì)象,它將查詢(xún)的結(jié)果以虛擬表的形式存儲(chǔ)在數(shù)據(jù)中。視圖并不在數(shù)據(jù)庫(kù)中以存儲(chǔ)數(shù)據(jù)集的形式存在。視圖的結(jié)構(gòu)和內(nèi)容是建立在對(duì)表的查詢(xún)基礎(chǔ)之上的,和表一樣包括行和列,這些行列數(shù)據(jù)都來(lái)源于其所引用的表,并且是在引用視圖過(guò)程中動(dòng)態(tài)生成的。
視圖中的內(nèi)容是由查詢(xún)定義來(lái)的,并且視圖和查詢(xún)都是通過(guò)SQL語(yǔ)句定義的,它們有著許多相同和不同之處,具體如下。
- ?存儲(chǔ):視圖存儲(chǔ)為數(shù)據(jù)庫(kù)設(shè)計(jì)的一部分,而查詢(xún)則不是。視圖可以禁止所有用戶(hù)訪問(wèn)數(shù)據(jù)庫(kù)中的基表,而要求用戶(hù)只能通過(guò)視圖操作數(shù)據(jù)。這種方法可以保護(hù)用戶(hù)和應(yīng)用程序不受某些數(shù)據(jù)庫(kù)修改的影響,同樣也可以保護(hù)數(shù)據(jù)表的安全性。
- ?排序:可以排序任何查詢(xún)結(jié)果,但是只有當(dāng)視圖包括TOP子句時(shí)才能排序視圖。
總之,視圖是由一個(gè)或多個(gè)表(或其他視圖)派生的虛擬表。視圖是基于查詢(xún)結(jié)果集的命名查詢(xún),它包含了從一個(gè)或多個(gè)表中選擇的特定列和行。因此視圖可以被認(rèn)為是一種虛擬表,其內(nèi)容并不實(shí)際存儲(chǔ)在數(shù)據(jù)庫(kù)中,而是在查詢(xún)時(shí)動(dòng)態(tài)生成。通過(guò)創(chuàng)建視圖,我們可以隱藏底層表的復(fù)雜性,簡(jiǎn)化復(fù)雜查詢(xún),并提供一種方便和安全的方式來(lái)訪問(wèn)數(shù)據(jù)。視圖只是定義了一個(gè)查詢(xún),并根據(jù)查詢(xún)的結(jié)果生成數(shù)據(jù)。
視圖為數(shù)據(jù)呈現(xiàn)提供了多樣的表現(xiàn)形式,用戶(hù)可以通過(guò)它瀏覽表中感興趣的數(shù)據(jù)。在SQL Server
2008中視圖分為以下3類(lèi)。
- ?標(biāo)準(zhǔn)視圖:保存在數(shù)據(jù)庫(kù)中的SELECT查詢(xún)語(yǔ)句,即通常意義上理解的視圖。
- ?索引視圖:創(chuàng)建有索引的視圖稱(chēng)為索引視圖。它經(jīng)過(guò)計(jì)算并存儲(chǔ)有自己的數(shù)據(jù),可以提高某些類(lèi)型查詢(xún)的性能,尤其適用于聚合許多行的查詢(xún),但不太適用于經(jīng)常更新的基本數(shù)據(jù)集。
- ?分區(qū)視圖:是在一臺(tái)或多臺(tái)服務(wù)器間水平聯(lián)結(jié)一組表中的分區(qū)數(shù)據(jù),以使數(shù)據(jù)看上去來(lái)源于一個(gè)表。
二、視圖好處
使用視圖的好處包括:
- 簡(jiǎn)化復(fù)雜的查詢(xún):視圖可以根據(jù)具體的業(yè)務(wù)需求和邏輯將復(fù)雜的查詢(xún)操作進(jìn)行封裝,提供更簡(jiǎn)潔易懂的查詢(xún)語(yǔ)句。
- 提高性能:視圖可以對(duì)查詢(xún)結(jié)果進(jìn)行緩存,當(dāng)查詢(xún)相同的數(shù)據(jù)時(shí),可以減少查詢(xún)時(shí)間和數(shù)據(jù)庫(kù)負(fù)載。
- 數(shù)據(jù)安全性:通過(guò)視圖,可以控制用戶(hù)對(duì)數(shù)據(jù)的訪問(wèn)權(quán)限,限制他們只能查看和操作特定的列或行,從而保護(hù)數(shù)據(jù)的安全性。
三、創(chuàng)建視圖
法一:
使用SQL Server Management Studio創(chuàng)建視圖 ,具體操作步驟如下:
(1)啟動(dòng)SQL Server Management Studio,并連接到SQL Server2008中的數(shù)據(jù)庫(kù)。
(2)在“對(duì)象資源瀏覽器”中展開(kāi)“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),展開(kāi)指定的數(shù)據(jù)庫(kù),比如我選擇的是SJCX。
(3)右擊“視圖”選項(xiàng),在彈出的快捷菜單中選擇“新建視圖”命令,如圖所示。

(4)打開(kāi)“添加表”對(duì)話(huà)框,如圖所示。在列表框中選擇表rank,單擊“添加”按鈕,然后單擊“關(guān)閉”按鈕關(guān)閉該對(duì)話(huà)框。

(5)進(jìn)入視圖設(shè)計(jì)器界面,如圖所示。在“表選擇區(qū)”中選擇“所有列”選項(xiàng),單擊執(zhí)行按鈕,視圖結(jié)果區(qū)中自動(dòng)顯示視圖結(jié)果。

(6)單擊工具欄中的“保存”按鈕口,彈出“選擇名稱(chēng)”對(duì)話(huà)框,如圖所示。在“輸入視圖名稱(chēng)”文本框中輸入視圖名稱(chēng)View_Rank,單擊“確定”按鈕即可保存該視圖。

法二:
使用 CREATE VIEW 語(yǔ)句,具體語(yǔ)法如下:
CREATE VIEW view_name AS SELECT column1, column2, ... FROM table(s) WHERE condition;
比如選擇數(shù)據(jù)庫(kù)SJCX,創(chuàng)建視圖View_people,則SQL語(yǔ)句為:
CREATE VIEW view_people AS
SELECT [DepartmentId]
,[RankId]
,[PeopleId]
,[PeopleName]
,[PeopleGender]
,[PeopleBirth]
,[PeopleSalary]
,[PeoplePhone]
,[PeopleAddress]
,[peopleAddTime]
,[PeopleMail]
FROM [SJCX].[dbo].[People];執(zhí)行該SQL語(yǔ)句后即創(chuàng)建成功。這是最常用的創(chuàng)建視圖的方法,使用 CREATE VIEW 語(yǔ)句指定視圖的名稱(chēng)(view_name),然后在 SELECT 子句中定義視圖所選擇的列和表(或其他視圖),并可以包含一個(gè)可選的 WHERE 子句來(lái)篩選數(shù)據(jù)。
四、查看視圖信息
下面在SQL Server Management Studio中查看視圖View Stu的信息,具體操作步驟如下。
(1)啟動(dòng)SQL Server Management Studio,并連接到SQL Server2008中的數(shù)據(jù)庫(kù)。
(2)在“對(duì)象資源瀏覽器”中展開(kāi)“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),展開(kāi)指定的數(shù)據(jù)庫(kù)SJCX。
(3)再依次展開(kāi)“視圖”節(jié)點(diǎn),就會(huì)顯示出當(dāng)前數(shù)據(jù)庫(kù)中的所有視圖,右擊要查看信息的視圖。

(4)在彈出的快捷菜單中,如果想要查看視圖的屬性,選擇“屬性”選項(xiàng),彈出“視圖屬性”對(duì)話(huà)框,如圖所示:

(5)如果想要查看視圖中的內(nèi)容,可在圖所示的快捷菜單中選擇“編輯前200行”選項(xiàng),在右側(cè)即可顯示視圖中的內(nèi)容。
(6)如果想要重新設(shè)置視圖,可在快捷菜單中選擇“設(shè)計(jì)”選項(xiàng),打開(kāi)視圖的設(shè)計(jì)界面,如圖所示。在此界面中可對(duì)視圖重新進(jìn)行設(shè)置。

五、視圖插入數(shù)據(jù)
使用視圖可以插入新的記錄,但應(yīng)該注意的是,新插入的數(shù)據(jù)實(shí)際上是存儲(chǔ)在與視圖相關(guān)的表中。
示例:
向視圖View_Rank中插入信息“4,頂級(jí)”。
步驟如下:
(1)右擊要插入記錄的視圖,在彈出的快捷菜單中選擇“設(shè)計(jì)”命令,顯示視圖的設(shè)計(jì)界面。
(2)在顯示視圖結(jié)果的最下面一行直接輸入新記錄即可,如圖所示。

(3)然后按下Enter鍵,即可把信息插入到視圖中。
(4)單擊!按鈕,完成新記錄的添加,如圖所示:

六、視圖修改數(shù)據(jù)
使用視圖可以修改數(shù)據(jù)記錄,但是與插入記錄相同,修改的是數(shù)據(jù)表中的數(shù)據(jù)記錄。
示例:
修改視圖View_Rank中的記錄,將“頂級(jí)”修改為“低級(jí)”。
步驟如下:
(1)右擊要修改記錄的視圖,在彈出的快捷菜單中選擇“設(shè)計(jì)”命令,顯示視圖的設(shè)計(jì)界面。
(2)在顯示的視圖結(jié)果中,選擇要修改的內(nèi)容,直接修改即可。
(3)最后按下Enter鍵,即可把信息保存到視圖中。

七、視圖刪除數(shù)據(jù)
使用視圖可以刪除數(shù)據(jù)記錄,但是與插入記錄相同,刪除的是數(shù)據(jù)表中的數(shù)據(jù)記錄。
示例:
刪除視圖View_Rank中的記錄“低級(jí)”。
步驟如下:
(1)右擊要?jiǎng)h除記錄的視圖,在彈出的快捷菜單中選擇“設(shè)計(jì)”命令,顯示視圖的設(shè)計(jì)界面。
(2)在顯示視圖的結(jié)果中,右擊要?jiǎng)h除的行“低級(jí)”,在彈出的快捷菜單中選擇“刪除”命令,彈出“刪除”對(duì)話(huà)框,如圖所示。

(3)單擊“是”按鈕,便可將該記錄刪除。

(4)檢查結(jié)果,如圖所示:

八、刪除視圖
對(duì)于數(shù)據(jù)庫(kù)中不需要的視圖可以將其刪除,以釋放存儲(chǔ)空間??梢允褂闷髽I(yè)管理器將其刪除,也可以使用SQL語(yǔ)句將其刪除。
法一:
使用企業(yè)管理器刪除視圖的步驟如下:
(1)啟動(dòng)SQL Server Management Studio,.并連接到SQL Server2008中的數(shù)據(jù)庫(kù)。
(2)在“對(duì)象資源管理器”中依次展開(kāi)“數(shù)據(jù)庫(kù)”指定的數(shù)據(jù)庫(kù)/“視圖”節(jié)點(diǎn)。
(3)右擊要?jiǎng)h除的視圖,在彈出的快捷菜單中選擇“刪除”命令,彈出“刪除對(duì)象”對(duì)話(huà)框,如圖所示。 在“刪除對(duì)象”對(duì)話(huà)框中,單擊“顯示依賴(lài)關(guān)系”按鈕,可以顯示與該視圖有關(guān)的數(shù)據(jù)表和視圖,單擊“確定”按鈕,便可將該視圖刪除。

注意:
在刪除之前,應(yīng)該先查看視圖的依賴(lài)關(guān)系,如果有對(duì)象依賴(lài)于要?jiǎng)h除的視圖,那么要確
定是否要保存該對(duì)象,如果不保存,則可以直接將該視圖刪除,否則將不能刪除該視圖。
法二:
使用 DROP VIEW 語(yǔ)句來(lái)刪除視圖。下面是刪除視圖的語(yǔ)法:
DROP VIEW [IF EXISTS] view_name;
--或者
IF OBJECT_ID('view_name', 'V') IS NOT NULL
DROP VIEW view_name;可選的 IF EXISTS 子句用于檢查視圖是否存在。如果視圖不存在,執(zhí)行語(yǔ)句時(shí)不會(huì)引發(fā)錯(cuò)誤。
使用 OBJECT_ID 函數(shù)檢查視圖是否存在(V 表示視圖),如果存在則執(zhí)行 DROP VIEW 語(yǔ)句進(jìn)行刪除。
注意:
從 SQL Server 2016 版本開(kāi)始,引入了
DROP VIEW IF EXISTS語(yǔ)法。因此,如果使用的是 SQL Server 2016 及其更高版本,可以直接使用該語(yǔ)法來(lái)刪除視圖。
示例:
刪除視圖view_people:
-- 刪除視圖
DROP VIEW view_people;
-- 刪除視圖(如果存在)
DROP VIEW IF EXISTS view_people;
--或者
IF OBJECT_ID('view_people', 'V') IS NOT NULL
DROP VIEW view_people;總結(jié)
到此這篇關(guān)于SQL server中視圖(view)創(chuàng)建、修改與刪除的文章就介紹到這了,更多相關(guān)SQLServer視圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
sqlserver 禁用觸發(fā)器和啟用觸發(fā)器的語(yǔ)句
sqlserver 禁用觸發(fā)器和啟用觸發(fā)器的語(yǔ)句,有需要的朋友可以試試。2009-09-09
SQLServer查詢(xún)所有數(shù)據(jù)庫(kù)名和表名及表結(jié)構(gòu)等代碼示例
SQL Server是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),可以使用SQL語(yǔ)言來(lái)查詢(xún)表結(jié)構(gòu),這篇文章主要給大家介紹了關(guān)于SQLServer查詢(xún)所有數(shù)據(jù)庫(kù)名和表名及表結(jié)構(gòu)等的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
SQL server 表數(shù)據(jù)改變觸發(fā)發(fā)送郵件的方法
這篇文章主要介紹了SQL server 表數(shù)據(jù)改變觸發(fā)發(fā)送郵件的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
SQL SERVER 2012新增函數(shù)之邏輯函數(shù)CHOOSE詳解
這篇文章主要介紹了SQL SERVER 2012新增函數(shù)之邏輯函數(shù)CHOOSE的相關(guān)資料,文中介紹的很詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03
一句Sql把縱向表轉(zhuǎn)為橫向表,并分別分組求平均和總平均值
一句Sql把縱向表轉(zhuǎn)為橫向表,并分別分組求平均和總平均值,需要的朋友可以參考下。2010-06-06
快速實(shí)現(xiàn)SQL Server數(shù)據(jù)庫(kù)恢復(fù)備份
這篇文章主要為大家詳細(xì)介紹了如何快速實(shí)現(xiàn)SQL Server數(shù)據(jù)庫(kù)恢復(fù)備份的兩種方法,感興趣的小伙伴們可以參考一下2016-05-05
Navicat連接SQL Server,報(bào)錯(cuò)08001的解決方案
這篇文章主要講述了如何配置SQL Server和SQL Server Browser服務(wù),并通過(guò)修改TCP/IP屬性來(lái)設(shè)置端口號(hào)為1433,作者分享了自己的個(gè)人經(jīng)驗(yàn),并鼓勵(lì)大家參考和支持2025-01-01
SQL Server 2012無(wú)法連接到WMI提供程序(Cannot connect to WMI provider)解
這篇文章主要介紹了SQL Server 2012無(wú)法連接到WMI提供程序(Cannot connect to WMI provider)解決方案,需要的朋友可以參考下2014-07-07

