視角
1、視圖是從一個(gè)或多個(gè)表或視圖中導(dǎo)出的表,其結(jié)構(gòu)和數(shù)據(jù)是建立在對(duì)表的查詢(xún)基礎(chǔ)上的。
(資料圖片僅供參考)
2、和表一樣,視圖也是包括幾個(gè)被定義的數(shù)據(jù)列和多個(gè)數(shù)據(jù)行,但就本質(zhì)而言這些數(shù)據(jù)列和數(shù)據(jù)行來(lái)源于其所引用的表。
3、所以視圖不是真實(shí)存在的基礎(chǔ)表而是一張?zhí)摫恚晥D所對(duì)應(yīng)的數(shù)據(jù)并不實(shí)際地以視圖結(jié)構(gòu)存儲(chǔ)在數(shù)據(jù)庫(kù)中,而是存儲(chǔ)在視圖所引用的表中。
4、視圖一經(jīng)定義便存儲(chǔ)在數(shù)據(jù)庫(kù)中,與其相對(duì)應(yīng)的數(shù)據(jù)并沒(méi)有像表那樣又在數(shù)據(jù)庫(kù)中再存儲(chǔ)一份,通過(guò)視圖看到的數(shù)據(jù)只是存放在基本表中的數(shù)據(jù)。
5、對(duì)視圖的操作與對(duì)表的操作一樣,可以對(duì)其進(jìn)行查詢(xún)、修改(有一定的限制)、刪除。
6、當(dāng)對(duì)通過(guò)視圖看到的數(shù)據(jù)進(jìn)行修改時(shí),相應(yīng)的基本表的數(shù)據(jù)也要發(fā)生變化,同時(shí),若基本表的數(shù)據(jù)發(fā)生變化,則這種變化也可以自動(dòng)地反映到視圖中。
7、視圖有很多優(yōu)點(diǎn),主要表現(xiàn)在:?6?1視點(diǎn)集中?6?1簡(jiǎn)化操作?6?1定制數(shù)據(jù)?6?1合并分割數(shù)據(jù)?6?1安全性如果你要?jiǎng)?chuàng)建一個(gè)視圖,為其指定一個(gè)名稱(chēng)和一個(gè)查詢(xún)即可。
8、Microsoft SQL Server只保存視圖的元數(shù)據(jù)(metadata),用于描述這個(gè)對(duì)象,以及它所包含的列、安全、依賴(lài)等。
9、當(dāng)你查詢(xún)視圖時(shí),無(wú)論是獲取數(shù)據(jù)還是修改數(shù)據(jù),查詢(xún)處理器(query processor)都會(huì)用視圖定義代替視圖引用。
10、也就是說(shuō),查詢(xún)處理器展開(kāi)視圖定義并生成訪問(wèn)基對(duì)象(underlying objects)的執(zhí)行計(jì)劃。
11、視圖在數(shù)據(jù)庫(kù)中發(fā)揮著重要的作用。
12、視圖的重要用途之一便是被用作一個(gè)抽象裝置(abstraction mechanism)。
13、例如,在適當(dāng)時(shí)利用視圖你可以很容易地為基礎(chǔ)數(shù)據(jù)提供或多或少的規(guī)范化映像(normalized picture),這樣就不用更改實(shí)際數(shù)據(jù)的規(guī)范化(normalization)。
14、通過(guò)應(yīng)用模塊化的方法(逐步解決復(fù)雜問(wèn)題),可以簡(jiǎn)化解決方案。
15、可以利用視圖訪問(wèn)經(jīng)過(guò)篩選和處理的數(shù)據(jù),而不是直接對(duì)基表(base table)進(jìn)行操作(讓視圖的架構(gòu)和基對(duì)象的架構(gòu)相同),可以把視圖作為一個(gè)安全層(security layer)(在一定程度上)。
16、如果在視圖上創(chuàng)建索引,它在提高性能方面也發(fā)揮著重要作用。
17、在視圖上創(chuàng)建聚集索引(clustered index)會(huì)讓它的數(shù)據(jù)真正地保存在磁盤(pán)上,而不再是虛擬的數(shù)據(jù)。
18、我會(huì)在本章專(zhuān)門(mén)用一節(jié)介紹索引視圖。
19、現(xiàn)在,我們先來(lái)關(guān)注沒(méi)有索引的視圖,它們通常沒(méi)有特定的性能影響,包括消極的或積極的。
20、與其他的表表達(dá)式(如派生表、公用表表達(dá)式,或內(nèi)聯(lián)表值用戶定義函數(shù)[inline table-valued user-defined function,UDF])一樣,視圖的查詢(xún)定義必須滿足3個(gè)條件:不能在查詢(xún)定義中使用ORDER BY,除非定義中包含TOP或FOR XML說(shuō)明符。
21、所有的結(jié)果列必須有名稱(chēng)。
22、所有結(jié)果列的名稱(chēng)必須是唯一的。
23、定義視圖的查詢(xún)中在沒(méi)有TOP或FOR XML說(shuō)明符的情況下不能包含ORDER BY子句,這是因?yàn)橐晥D被認(rèn)為表示一個(gè)表。
24、表是一個(gè)邏輯實(shí)體,它的行沒(méi)有順序,不同于游標(biāo),游標(biāo)是一個(gè)物理對(duì)象,它可以對(duì)行排序。
25、表中的所有列必須有名稱(chēng),且名稱(chēng)必須是唯一的,這一點(diǎn)勿庸置疑。
26、為視圖的目標(biāo)列指定名稱(chēng)有兩種方法,可以在視圖名稱(chēng)后面的圓括號(hào)內(nèi)指定,也可以用每個(gè)表達(dá)式后面的別名作為列名稱(chēng)。
27、來(lái)看一個(gè)示例,運(yùn)行下面的代碼創(chuàng)建VcustsWithOrders視圖。
28、SET NOCOUNT ON;USE Northwind;GOIF OBJECT_ID(‘dbo.VcustsWithOrders’) IS NOT NULLDROP VIEW dbo.VcustsWithOrders;GOCREATE VIEW dbo.VcustsWithOrdersASSELECT CustomerID, CompanyName, ContactName, ContactTitle,Address, City, Region, PostalCode, Country, Phone, FaxFROM Customers AS CWHERE EXISTS(SELECT * FROM dbo.Orders AS OWHERE O.CustomerID = C.CustomerID);GO滿意請(qǐng)采納。
本文到此分享完畢,希望對(duì)大家有所幫助。
- 視角
- 集中培訓(xùn) 專(zhuān)項(xiàng)招聘! 秦皇島市創(chuàng)新
- 沈陽(yáng)地鐵三號(hào)線文富路站主體結(jié)構(gòu)封
- 焦點(diǎn)報(bào)道:場(chǎng)內(nèi)ETF資金動(dòng)態(tài):煤價(jià)持
- 廊坊臨空國(guó)際會(huì)展中心盡顯科技范兒
- 夢(mèng)幻西游賬號(hào)管理中心網(wǎng)頁(yè)_夢(mèng)幻西游
- 【世界快播報(bào)】城投控股(600649)6
- 天生性格冷淡,不容易親近的星座_環(huán)
- 法鯊新片《下一球成名》多倫多電影
- 激發(fā)消費(fèi)活力 信用卡優(yōu)化自營(yíng)渠道