sql視圖的作用
2023-05-25 17:17:55 閱讀(205)
sqlserver建立視圖有什么作用?
視圖的作用: 1 視圖可以簡(jiǎn)化用戶的操作 試圖機(jī)制使用戶可以將注意力集中在所關(guān)心的數(shù)據(jù)上 2 視圖使用戶能以多種角度看待同一數(shù)據(jù) 視圖使用戶能以多種角度看待同一數(shù)據(jù),當(dāng)許多不同種類的用戶共享同一數(shù)據(jù)庫(kù)時(shí),這種靈活性很重要 3視圖對(duì)重構(gòu)數(shù)據(jù)庫(kù)提供了一定程度的邏輯獨(dú)立性 4 視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù) 有了視圖機(jī)制,就可以在設(shè)計(jì)數(shù)據(jù)可應(yīng)用系統(tǒng)時(shí),對(duì)不同的用戶定義不同的視圖,使機(jī)密數(shù)據(jù)不出現(xiàn)在不應(yīng)看到這些數(shù)據(jù)的用戶視圖上 5適當(dāng)?shù)睦靡晥D可以更清晰的表達(dá)查詢
oracle視圖有什么用呢?
視圖(view)定義: 視圖是一張?zhí)摫?,不占用物理空間(指的是圖中數(shù)據(jù)不占用,視圖本身定義語(yǔ)句還是存在硬盤(pán)中) 視圖是從一個(gè)或多個(gè)實(shí)際表中獲得的,這些表的數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中。那些用于產(chǎn)生視圖的表叫做該視圖的基表。一個(gè)視圖也可以從另一個(gè)視圖中產(chǎn)生。 視圖的定義存在數(shù)據(jù)庫(kù)中,與此定義相關(guān)的數(shù)據(jù)并沒(méi)有再存一份于數(shù)據(jù)庫(kù)中。通過(guò)視圖看到的數(shù)據(jù)存放在基表中。 視圖看上去非常像數(shù)據(jù)庫(kù)的物理表,對(duì)它的操作同任何其他的表(增、刪、改、查)。當(dāng)通過(guò)修改視圖修改數(shù)據(jù)時(shí),實(shí)際是在改變基表中的數(shù)據(jù);相反的,基表中數(shù)據(jù)的改變也會(huì)自動(dòng)反應(yīng)到由基表產(chǎn)生的視圖中。由于邏輯上的原因,有些Oracle視圖可以修改對(duì)應(yīng)的基表,有些則不能(僅能查詢)。 視圖的作用:將一些查詢復(fù)雜的SQL語(yǔ)句變?yōu)橐晥D,便于查詢。 視圖的創(chuàng)建:語(yǔ)法:在CREATE VIEW語(yǔ)句后加入子查詢。 舉個(gè)栗子--> 查詢視圖時(shí),不需要再寫(xiě)完全的查詢語(yǔ)句,只需要簡(jiǎn)單的寫(xiě)上從視圖中查詢的語(yǔ)句就可以了 視圖也可以從視圖中產(chǎn)生: 修改視圖的數(shù)據(jù),就是修改基表的數(shù)據(jù): 視圖的刪除:當(dāng)視圖不在需要時(shí),用“drop viow”撤銷,刪掉視圖不會(huì)導(dǎo)致數(shù)據(jù)丟失(不會(huì)影響基表的數(shù)據(jù)),因?yàn)橐晥D是基于數(shù)據(jù)庫(kù)的表之上的一個(gè)查詢定義(虛表) 視圖的優(yōu)點(diǎn):可以使某些重復(fù)出現(xiàn)SQL語(yǔ)句變得更為簡(jiǎn)單 視圖的缺點(diǎn):1.如果修改基表的結(jié)構(gòu),視圖失效 2.增加數(shù)據(jù)庫(kù)的維護(hù)成本 3.視圖會(huì)被覆蓋掉 4.一般情況下,不要對(duì)視圖進(jìn)行DML操作
sql server中的視圖有什么用?和存儲(chǔ)過(guò)程有什么區(qū)別?他的好處是什么?
視圖是把現(xiàn)在有數(shù)據(jù)組合成新的形式展示出來(lái),相當(dāng)于一張?zhí)摂M的表,運(yùn)行時(shí)用來(lái)呈現(xiàn)數(shù)據(jù)。 視圖和存儲(chǔ)過(guò)程的區(qū)別只能查。。。增刪改是不行的 好處是 不用存儲(chǔ)在數(shù)據(jù)庫(kù)里。。
每個(gè)查詢都有三種視圖其中用來(lái)顯示查詢結(jié)果的視圖是?
有五種視圖 1.數(shù)據(jù)表視圖:以表格的形式顯示查詢中的數(shù)據(jù),可用于編輯字段、添加和刪除數(shù)據(jù)、查找數(shù)據(jù)等。 2.數(shù)據(jù)透視圖視圖:對(duì)查詢中的數(shù)據(jù)、數(shù)據(jù)匯總以圖形化的方式顯示出來(lái)。 3.數(shù)據(jù)透視表視圖:動(dòng)態(tài)的更改表格的布局、重構(gòu)數(shù)據(jù)的組織方式,從而方便的用不同的方法分析數(shù)據(jù)。 4.設(shè)計(jì)視圖:用于創(chuàng)建和修改查詢,添加顯示字段、設(shè)置數(shù)據(jù)來(lái)源和查詢條件等。 5.SQL視圖:用于輸入和顯示SQL語(yǔ)句。 查詢的數(shù)據(jù)源可以是表和查詢
SQL的視圖機(jī)制有哪些優(yōu)點(diǎn)?
在程序設(shè)計(jì)的時(shí)候必須先了解視圖的優(yōu)缺點(diǎn),這樣可以揚(yáng)長(zhǎng)避短,視圖具有如下的一些優(yōu)點(diǎn): ● 簡(jiǎn)單性。 視圖不僅可以簡(jiǎn)化用戶對(duì)數(shù)據(jù)的理解,也可以簡(jiǎn)化他們的操作。那些被經(jīng)常使用的查詢可以被定義為視圖,從而使用戶不必為以后的操作每次都指定全部的條件。 ● 安全性。 通過(guò)視圖用戶只能查詢和修改他們所能見(jiàn)到的數(shù)據(jù)。數(shù)據(jù)庫(kù)中的其他數(shù)據(jù)則既看不見(jiàn)也取不到。 數(shù)據(jù)庫(kù)授權(quán)命令可以使每個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的檢索限制到特定的數(shù)據(jù)庫(kù)對(duì)象上,但不能授權(quán)到數(shù)據(jù)庫(kù)特定行和特定的列上。 通過(guò)視圖,用戶可以被限制在數(shù)據(jù)的不同子集上。 ● 邏輯數(shù)據(jù)獨(dú)立性。 視圖可以使應(yīng)用程序和數(shù)據(jù)庫(kù)表在一定程度上獨(dú)立。如果沒(méi)有視圖,應(yīng)用一定是建立在表上的。有了視圖之后,程序可以建立在視圖之上,從而程序與數(shù)據(jù)庫(kù)表被視圖分割開(kāi)來(lái)。
SQL中使用視圖的優(yōu)點(diǎn)和缺點(diǎn)是什么?
一,視圖著重于特定數(shù)據(jù)。視圖可以讓用戶或者程序開(kāi)發(fā)人員只看到他們所需要的數(shù)據(jù),而不需要把表中的所有信息與字段暴露出來(lái),這樣增強(qiáng)了數(shù)據(jù)的安全性。 二,簡(jiǎn)化數(shù)據(jù)的操作,易維護(hù)。我們可以將經(jīng)常用到的多表聯(lián)合查詢出來(lái)的數(shù)據(jù),或特定的結(jié)果集定義為視圖,這樣就起到了模塊化數(shù)據(jù)的作用。我們?cè)谑褂眠@些數(shù)據(jù)時(shí)直接查詢?cè)撘晥D就可以,而不用到處寫(xiě)長(zhǎng)長(zhǎng)的SQL語(yǔ)句,這樣也起到易維護(hù)的作用。 三,視圖可以限定查詢數(shù)據(jù)。比如:對(duì)于不同的用戶,我們只提供部分?jǐn)?shù)據(jù)給他。這樣,我們就可以在視圖中限定結(jié)果集,然后返回該視圖給他。這樣,無(wú)論用戶怎么對(duì)視圖定義查詢條件,他也不能查詢出我們不想提供給他的數(shù)據(jù)。雖然視圖可以給我們帶來(lái)種種便利,但不意味著我們就可以濫用它。因?yàn)橐晥D其實(shí)就是一段SQL語(yǔ)句,所以它的結(jié)果都是每次調(diào)用時(shí)動(dòng)態(tài)生成的。如果不合理的定義視圖,必然帶來(lái)性能上的損耗。下面是我們?cè)趧?chuàng)建視圖應(yīng)該要注意的幾點(diǎn):一,操作視圖會(huì)比直接操作基礎(chǔ)表要慢,所以我們盡量避免在大型表上創(chuàng)建視圖。二,盡量不要?jiǎng)?chuàng)建嵌套視圖,就是在視圖中使用視圖。這樣在查詢時(shí),會(huì)多次重復(fù)訪問(wèn)基礎(chǔ)表,帶來(lái)性能損耗。三,盡量在視圖只返回所需的信息,盡量不要在視圖使用不需要訪問(wèn)的表。
SQL中使用視圖的優(yōu)點(diǎn)和缺點(diǎn)是什么?
什么時(shí)候使用視圖呢? 應(yīng)用場(chǎng)景1:保密工作,比如有一個(gè)員工工資表,如果你只希望財(cái)務(wù)看到員工工資這個(gè)字段,而其他人不能看到工資字段,那就用一個(gè)視圖,把工資這個(gè)敏感字段過(guò)濾掉 應(yīng)用場(chǎng)景2:有一個(gè)查詢語(yǔ)句非常復(fù)雜,大概有100行這么多,有時(shí)還想把這個(gè)巨大無(wú)比的select語(yǔ)句和其他表關(guān)聯(lián)起來(lái)得到結(jié)果,寫(xiě)太多很麻煩,可以用一個(gè)視圖來(lái)代替這100行的select語(yǔ)句,充當(dāng)一個(gè)變量角色 應(yīng)用場(chǎng)景1:你在短期內(nèi)有很多DML操作,比如京東淘寶亞馬遜的購(gòu)物車表,把東西放購(gòu)物車(insert),變更數(shù)量(update),刪除商品(delete),一旦結(jié)算金錢(qián)后,這些數(shù)據(jù)就要清掉,這時(shí)需要用臨時(shí)表應(yīng)用場(chǎng)景2:在導(dǎo)出數(shù)據(jù)時(shí),你可能不想導(dǎo)完整的數(shù)據(jù)庫(kù),或者表,你可能只想要導(dǎo)出符合某些條件的數(shù)據(jù),那么你可以創(chuàng)建臨時(shí)表,把select語(yǔ)句插入到臨時(shí)表,接著導(dǎo)出這個(gè)臨時(shí)表,導(dǎo)完以后通過(guò)結(jié)束session或者事務(wù)的方式,讓這些沒(méi)用的數(shù)據(jù)自動(dòng)清理掉應(yīng)用場(chǎng)景3:你在寫(xiě)存儲(chǔ)過(guò)程時(shí),有很多的連接,比如你需要連接A,B,C,D,E,F,G,H那么多張表,才能得到你的結(jié)果表,同時(shí)做連接的消耗太大,你可以先A,B,C連接的結(jié)果,放在臨時(shí)表,接著再把這張臨時(shí)表,跟D,E,F連接,作為新的結(jié)果放在臨時(shí)表,接著再把臨時(shí)表與G,H連接,最后得到臨時(shí)表數(shù)據(jù),一次插入到結(jié)果表(永久表)。答案:使用臨時(shí)表,不用視圖
未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明出處