SQL?server中視圖(view)創(chuàng)建、修改與刪除
一、視圖概述:
視圖是一種常用的數(shù)據(jù)庫對象,它將查詢的結(jié)果以虛擬表的形式存儲在數(shù)據(jù)中。視圖并不在數(shù)據(jù)庫中以存儲數(shù)據(jù)集的形式存在。視圖的結(jié)構(gòu)和內(nèi)容是建立在對表的查詢基礎(chǔ)之上的,和表一樣包括行和列,這些行列數(shù)據(jù)都來源于其所引用的表,并且是在引用視圖過程中動態(tài)生成的。
視圖中的內(nèi)容是由查詢定義來的,并且視圖和查詢都是通過SQL語句定義的,它們有著許多相同和不同之處,具體如下。
- ?存儲:視圖存儲為數(shù)據(jù)庫設(shè)計的一部分,而查詢則不是。視圖可以禁止所有用戶訪問數(shù)據(jù)庫中的基表,而要求用戶只能通過視圖操作數(shù)據(jù)。這種方法可以保護(hù)用戶和應(yīng)用程序不受某些數(shù)據(jù)庫修改的影響,同樣也可以保護(hù)數(shù)據(jù)表的安全性。
- ?排序:可以排序任何查詢結(jié)果,但是只有當(dāng)視圖包括TOP子句時才能排序視圖。
總之,視圖是由一個或多個表(或其他視圖)派生的虛擬表。視圖是基于查詢結(jié)果集的命名查詢,它包含了從一個或多個表中選擇的特定列和行。因此視圖可以被認(rèn)為是一種虛擬表,其內(nèi)容并不實際存儲在數(shù)據(jù)庫中,而是在查詢時動態(tài)生成。通過創(chuàng)建視圖,我們可以隱藏底層表的復(fù)雜性,簡化復(fù)雜查詢,并提供一種方便和安全的方式來訪問數(shù)據(jù)。視圖只是定義了一個查詢,并根據(jù)查詢的結(jié)果生成數(shù)據(jù)。
視圖為數(shù)據(jù)呈現(xiàn)提供了多樣的表現(xiàn)形式,用戶可以通過它瀏覽表中感興趣的數(shù)據(jù)。在SQL Server
2008中視圖分為以下3類。
- ?標(biāo)準(zhǔn)視圖:保存在數(shù)據(jù)庫中的SELECT查詢語句,即通常意義上理解的視圖。
- ?索引視圖:創(chuàng)建有索引的視圖稱為索引視圖。它經(jīng)過計算并存儲有自己的數(shù)據(jù),可以提高某些類型查詢的性能,尤其適用于聚合許多行的查詢,但不太適用于經(jīng)常更新的基本數(shù)據(jù)集。
- ?分區(qū)視圖:是在一臺或多臺服務(wù)器間水平聯(lián)結(jié)一組表中的分區(qū)數(shù)據(jù),以使數(shù)據(jù)看上去來源于一個表。
二、視圖好處
使用視圖的好處包括:
- 簡化復(fù)雜的查詢:視圖可以根據(jù)具體的業(yè)務(wù)需求和邏輯將復(fù)雜的查詢操作進(jìn)行封裝,提供更簡潔易懂的查詢語句。
- 提高性能:視圖可以對查詢結(jié)果進(jìn)行緩存,當(dāng)查詢相同的數(shù)據(jù)時,可以減少查詢時間和數(shù)據(jù)庫負(fù)載。
- 數(shù)據(jù)安全性:通過視圖,可以控制用戶對數(shù)據(jù)的訪問權(quán)限,限制他們只能查看和操作特定的列或行,從而保護(hù)數(shù)據(jù)的安全性。
三、創(chuàng)建視圖
法一:
使用SQL Server Management Studio創(chuàng)建視圖 ,具體操作步驟如下:
(1)啟動SQL Server Management Studio,并連接到SQL Server2008中的數(shù)據(jù)庫。
(2)在“對象資源瀏覽器”中展開“數(shù)據(jù)庫”節(jié)點,展開指定的數(shù)據(jù)庫,比如我選擇的是SJCX。
(3)右擊“視圖”選項,在彈出的快捷菜單中選擇“新建視圖”命令,如圖所示。
(4)打開“添加表”對話框,如圖所示。在列表框中選擇表rank,單擊“添加”按鈕,然后單擊“關(guān)閉”按鈕關(guān)閉該對話框。
(5)進(jìn)入視圖設(shè)計器界面,如圖所示。在“表選擇區(qū)”中選擇“所有列”選項,單擊執(zhí)行按鈕,視圖結(jié)果區(qū)中自動顯示視圖結(jié)果。
(6)單擊工具欄中的“保存”按鈕口,彈出“選擇名稱”對話框,如圖所示。在“輸入視圖名稱”文本框中輸入視圖名稱View_Rank,單擊“確定”按鈕即可保存該視圖。
法二:
使用 CREATE VIEW 語句,具體語法如下:
CREATE VIEW view_name AS SELECT column1, column2, ... FROM table(s) WHERE condition;
比如選擇數(shù)據(jù)庫SJCX,創(chuàng)建視圖View_people,則SQL語句為:
CREATE VIEW view_people AS SELECT [DepartmentId] ,[RankId] ,[PeopleId] ,[PeopleName] ,[PeopleGender] ,[PeopleBirth] ,[PeopleSalary] ,[PeoplePhone] ,[PeopleAddress] ,[peopleAddTime] ,[PeopleMail] FROM [SJCX].[dbo].[People];
執(zhí)行該SQL語句后即創(chuàng)建成功。這是最常用的創(chuàng)建視圖的方法,使用 CREATE VIEW 語句指定視圖的名稱(view_name),然后在 SELECT 子句中定義視圖所選擇的列和表(或其他視圖),并可以包含一個可選的 WHERE 子句來篩選數(shù)據(jù)。
四、查看視圖信息
下面在SQL Server Management Studio中查看視圖View Stu的信息,具體操作步驟如下。
(1)啟動SQL Server Management Studio,并連接到SQL Server2008中的數(shù)據(jù)庫。
(2)在“對象資源瀏覽器”中展開“數(shù)據(jù)庫”節(jié)點,展開指定的數(shù)據(jù)庫SJCX。
(3)再依次展開“視圖”節(jié)點,就會顯示出當(dāng)前數(shù)據(jù)庫中的所有視圖,右擊要查看信息的視圖。
(4)在彈出的快捷菜單中,如果想要查看視圖的屬性,選擇“屬性”選項,彈出“視圖屬性”對話框,如圖所示:
(5)如果想要查看視圖中的內(nèi)容,可在圖所示的快捷菜單中選擇“編輯前200行”選項,在右側(cè)即可顯示視圖中的內(nèi)容。
(6)如果想要重新設(shè)置視圖,可在快捷菜單中選擇“設(shè)計”選項,打開視圖的設(shè)計界面,如圖所示。在此界面中可對視圖重新進(jìn)行設(shè)置。
五、視圖插入數(shù)據(jù)
使用視圖可以插入新的記錄,但應(yīng)該注意的是,新插入的數(shù)據(jù)實際上是存儲在與視圖相關(guān)的表中。
示例:
向視圖View_Rank中插入信息“4,頂級”。
步驟如下:
(1)右擊要插入記錄的視圖,在彈出的快捷菜單中選擇“設(shè)計”命令,顯示視圖的設(shè)計界面。
(2)在顯示視圖結(jié)果的最下面一行直接輸入新記錄即可,如圖所示。
(3)然后按下Enter鍵,即可把信息插入到視圖中。
(4)單擊!按鈕,完成新記錄的添加,如圖所示:
六、視圖修改數(shù)據(jù)
使用視圖可以修改數(shù)據(jù)記錄,但是與插入記錄相同,修改的是數(shù)據(jù)表中的數(shù)據(jù)記錄。
示例:
修改視圖View_Rank中的記錄,將“頂級”修改為“低級”。
步驟如下:
(1)右擊要修改記錄的視圖,在彈出的快捷菜單中選擇“設(shè)計”命令,顯示視圖的設(shè)計界面。
(2)在顯示的視圖結(jié)果中,選擇要修改的內(nèi)容,直接修改即可。
(3)最后按下Enter鍵,即可把信息保存到視圖中。
七、視圖刪除數(shù)據(jù)
使用視圖可以刪除數(shù)據(jù)記錄,但是與插入記錄相同,刪除的是數(shù)據(jù)表中的數(shù)據(jù)記錄。
示例:
刪除視圖View_Rank中的記錄“低級”。
步驟如下:
(1)右擊要刪除記錄的視圖,在彈出的快捷菜單中選擇“設(shè)計”命令,顯示視圖的設(shè)計界面。
(2)在顯示視圖的結(jié)果中,右擊要刪除的行“低級”,在彈出的快捷菜單中選擇“刪除”命令,彈出“刪除”對話框,如圖所示。
(3)單擊“是”按鈕,便可將該記錄刪除。
(4)檢查結(jié)果,如圖所示:
八、刪除視圖
對于數(shù)據(jù)庫中不需要的視圖可以將其刪除,以釋放存儲空間。可以使用企業(yè)管理器將其刪除,也可以使用SQL語句將其刪除。
法一:
使用企業(yè)管理器刪除視圖的步驟如下:
(1)啟動SQL Server Management Studio,.并連接到SQL Server2008中的數(shù)據(jù)庫。
(2)在“對象資源管理器”中依次展開“數(shù)據(jù)庫”指定的數(shù)據(jù)庫/“視圖”節(jié)點。
(3)右擊要刪除的視圖,在彈出的快捷菜單中選擇“刪除”命令,彈出“刪除對象”對話框,如圖所示。 在“刪除對象”對話框中,單擊“顯示依賴關(guān)系”按鈕,可以顯示與該視圖有關(guān)的數(shù)據(jù)表和視圖,單擊“確定”按鈕,便可將該視圖刪除。
注意:
在刪除之前,應(yīng)該先查看視圖的依賴關(guān)系,如果有對象依賴于要刪除的視圖,那么要確
定是否要保存該對象,如果不保存,則可以直接將該視圖刪除,否則將不能刪除該視圖。
法二:
使用 DROP VIEW 語句來刪除視圖。下面是刪除視圖的語法:
DROP VIEW [IF EXISTS] view_name; --或者 IF OBJECT_ID('view_name', 'V') IS NOT NULL DROP VIEW view_name;
可選的 IF EXISTS
子句用于檢查視圖是否存在。如果視圖不存在,執(zhí)行語句時不會引發(fā)錯誤。
使用 OBJECT_ID
函數(shù)檢查視圖是否存在(V 表示視圖),如果存在則執(zhí)行 DROP VIEW
語句進(jìn)行刪除。
注意:
從 SQL Server 2016 版本開始,引入了
DROP VIEW IF EXISTS
語法。因此,如果使用的是 SQL Server 2016 及其更高版本,可以直接使用該語法來刪除視圖。
示例:
刪除視圖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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
sqlserver 禁用觸發(fā)器和啟用觸發(fā)器的語句
sqlserver 禁用觸發(fā)器和啟用觸發(fā)器的語句,有需要的朋友可以試試。2009-09-09SQLServer查詢所有數(shù)據(jù)庫名和表名及表結(jié)構(gòu)等代碼示例
SQL Server是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可以使用SQL語言來查詢表結(jié)構(gòu),這篇文章主要給大家介紹了關(guān)于SQLServer查詢所有數(shù)據(jù)庫名和表名及表結(jié)構(gòu)等的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11SQL server 表數(shù)據(jù)改變觸發(fā)發(fā)送郵件的方法
這篇文章主要介紹了SQL server 表數(shù)據(jù)改變觸發(fā)發(fā)送郵件的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08SQL SERVER 2012新增函數(shù)之邏輯函數(shù)CHOOSE詳解
這篇文章主要介紹了SQL SERVER 2012新增函數(shù)之邏輯函數(shù)CHOOSE的相關(guān)資料,文中介紹的很詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03一句Sql把縱向表轉(zhuǎn)為橫向表,并分別分組求平均和總平均值
一句Sql把縱向表轉(zhuǎn)為橫向表,并分別分組求平均和總平均值,需要的朋友可以參考下。2010-06-06快速實現(xiàn)SQL Server數(shù)據(jù)庫恢復(fù)備份
這篇文章主要為大家詳細(xì)介紹了如何快速實現(xiàn)SQL Server數(shù)據(jù)庫恢復(fù)備份的兩種方法,感興趣的小伙伴們可以參考一下2016-05-05Navicat連接SQL Server,報錯08001的解決方案
這篇文章主要講述了如何配置SQL Server和SQL Server Browser服務(wù),并通過修改TCP/IP屬性來設(shè)置端口號為1433,作者分享了自己的個人經(jīng)驗,并鼓勵大家參考和支持2025-01-01SQL Server 2012無法連接到WMI提供程序(Cannot connect to WMI provider)解
這篇文章主要介紹了SQL Server 2012無法連接到WMI提供程序(Cannot connect to WMI provider)解決方案,需要的朋友可以參考下2014-07-07