什么是視圖視圖的作用
什么是視圖視圖的作用
視圖是指計(jì)算機(jī)數(shù)據(jù)庫(kù)中的視圖,是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。以下是由學(xué)習(xí)啦小編整理關(guān)于什么是視圖的內(nèi)容,希望大家喜歡!
視圖的含義
從用戶角度來(lái)看,一個(gè)視圖是從一個(gè)特定的角度來(lái)查看數(shù)據(jù)庫(kù)中的數(shù)據(jù)。從數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部來(lái)看,一個(gè)視圖是由SELECT語(yǔ)句組成的查詢定義的虛擬表。從數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部來(lái)看,視圖是由一張或多張表中的數(shù)據(jù)組成的,從數(shù)據(jù)庫(kù)系統(tǒng)外部來(lái)看,視圖就如同一張表一樣,對(duì)表能夠進(jìn)行的一般操作都可以應(yīng)用于視圖,例如查詢,插入,修改,刪除操作等。
視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖的作用類(lèi)似于篩選。定義視圖的篩選可以來(lái)自當(dāng)前或其它數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)表,或者其它視圖。分布式查詢也可用于定義使用多個(gè)異類(lèi)源數(shù)據(jù)的視圖。
視圖是存儲(chǔ)在數(shù)據(jù)庫(kù)中的查詢的SQL 語(yǔ)句,它主要出于兩種原因:安全原因, 視圖可以隱藏一些數(shù)據(jù),如:社會(huì)保險(xiǎn)基金表,可以用視圖只顯示姓名,地址,而不顯示社會(huì)保險(xiǎn)號(hào)和工資數(shù)等,另一原因是可使復(fù)雜的查詢易于理解和使用。
視圖:查看圖形或文檔的方式。
視圖一經(jīng)定義便存儲(chǔ)在數(shù)據(jù)庫(kù)中,與其相對(duì)應(yīng)的數(shù)據(jù)并沒(méi)有像表那樣又在數(shù)據(jù)庫(kù)中再存儲(chǔ)一份,通過(guò)視圖看到的數(shù)據(jù)只是存放在基本表中的數(shù)據(jù)。對(duì)視圖的操作與對(duì)表的操作一樣,可以對(duì)其進(jìn)行查詢、修改(有一定的限制)、刪除。
當(dāng)對(duì)通過(guò)視圖看到的數(shù)據(jù)進(jìn)行修改時(shí),相應(yīng)的基本表的數(shù)據(jù)也要發(fā)生變化,同時(shí),若基本表的數(shù)據(jù)發(fā)生變化,則這種變化也可以自動(dòng)地反映到視圖中。
視圖的種類(lèi)區(qū)別
Oracle數(shù)據(jù)庫(kù)視圖的種類(lèi)和區(qū)別
關(guān)系視圖:Oracle視圖是作為數(shù)據(jù)庫(kù)對(duì)象存在的,因此,創(chuàng)建之后也可以通過(guò)工具或數(shù)據(jù)字典來(lái)查看視圖的相關(guān)信息。這是大家常用的視圖,如:create view 視圖。
內(nèi)嵌視圖:在from語(yǔ)句中的可以把表改成一個(gè)子查詢,如:select a、id ,b、id from emp a,(select id from dept) b where a、id=b、id內(nèi)嵌視圖不屬于任何用戶,也不是對(duì)象,內(nèi)嵌視圖是子查詢的一種,可以與數(shù)據(jù)表、視圖一樣作為查詢語(yǔ)句的數(shù)據(jù)源存在,但在形式上有較大的區(qū)別,內(nèi)嵌視圖不必使用create view命令進(jìn)行創(chuàng)建,因此,在數(shù)據(jù)字典中也無(wú)法獲得相應(yīng)信息。內(nèi)嵌視圖的特點(diǎn)在于無(wú)須創(chuàng)建真正的數(shù)據(jù)庫(kù)對(duì)象,而只是封裝查詢,因此會(huì)節(jié)約數(shù)據(jù)庫(kù)資源,同時(shí)不會(huì)增加維護(hù)成本。但是內(nèi)嵌視圖不具有可復(fù)用性,因此當(dāng)預(yù)期將在多處調(diào)用到同一查詢定義時(shí),還是應(yīng)該使用關(guān)系視圖。
對(duì)象視圖:對(duì)象類(lèi)型在數(shù)據(jù)庫(kù)編程中有許多好處,但有時(shí),應(yīng)用程序已經(jīng)開(kāi)發(fā)完成。為了迎合對(duì)象類(lèi)型而重建數(shù)據(jù)表是不現(xiàn)實(shí)的。對(duì)象視圖正是解決這一問(wèn)題的優(yōu)秀策略。
對(duì)象視圖創(chuàng)建之后,同樣可以在數(shù)據(jù)字典中獲得其相應(yīng)信息。利用Oracle內(nèi)置視圖user_views可以獲得對(duì)象視圖相關(guān)信息。Oracle中的對(duì)象數(shù)據(jù)實(shí)際仍然以關(guān)系數(shù)據(jù)的形式存儲(chǔ)。但是,對(duì)象的特性,例如繼承、封裝等,都為開(kāi)發(fā)人員提供了更加靈活的處理形式。同樣,可以構(gòu)造復(fù)雜的對(duì)象類(lèi)型來(lái)封裝復(fù)雜的多表查詢。
物化視圖:常用于數(shù)據(jù)庫(kù)的容災(zāi),不是傳統(tǒng)意義上虛擬視圖,是實(shí)體化視圖,和表一樣可以存儲(chǔ)數(shù)據(jù)、查詢數(shù)據(jù)。主備數(shù)據(jù)庫(kù)數(shù)據(jù)同步通過(guò)物化視圖實(shí)現(xiàn),主備數(shù)據(jù)庫(kù)通過(guò)data link連接,在主備數(shù)據(jù)庫(kù)物化視圖進(jìn)行數(shù)據(jù)復(fù)制。當(dāng)主數(shù)據(jù)庫(kù)垮掉時(shí),備數(shù)據(jù)庫(kù)接管,實(shí)現(xiàn)容災(zāi)。
視圖的作用
簡(jiǎn)單性??吹降木褪切枰摹R晥D不僅可以簡(jiǎn)化用戶對(duì)數(shù)據(jù)的理解,也可以簡(jiǎn)化他們的操作。那些被經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。
安全性。通過(guò)視圖用戶只能查詢和修改他們所能見(jiàn)到的數(shù)據(jù)。但不能授權(quán)到數(shù)據(jù)庫(kù)特定行和特定的列上。通過(guò)視圖,用戶可以被限制在數(shù)據(jù)的不同子集上:
使用權(quán)限可被限制在另一視圖的一個(gè)子集上,或是一些視圖和基表合并后的子集上。
邏輯數(shù)據(jù)獨(dú)立性。視圖可幫助用戶屏蔽真實(shí)表結(jié)構(gòu)變化帶來(lái)的影響。
視圖的優(yōu)點(diǎn)
1、 視點(diǎn)集中
視圖集中即是使用戶只關(guān)心它感興趣的某些特定數(shù)據(jù)和他們所負(fù)責(zé)的特定任務(wù)。這樣通過(guò)只允許用戶看到視圖中所定義的數(shù)據(jù)而不是視圖引用表中的數(shù)據(jù)而提高了數(shù)據(jù)的安全性。
2、 簡(jiǎn)化操作
視圖大大簡(jiǎn)化了用戶對(duì)數(shù)據(jù)的操作。因?yàn)樵诙x視圖時(shí),若視圖本身就是一個(gè)復(fù)雜查詢的結(jié)果集,這樣在每一次執(zhí)行相同的查詢時(shí),不必重新寫(xiě)這些復(fù)雜的查詢語(yǔ)句,只要一條簡(jiǎn)單的查詢視圖語(yǔ)句即可??梢?jiàn)視圖向用戶隱藏了表與表之間的復(fù)雜的連接操作。
3、 定制數(shù)據(jù)
視圖能夠?qū)崿F(xiàn)讓不同的用戶以不同的方式看到不同或相同的數(shù)據(jù)集。因此,當(dāng)有許多不同水平的用戶共用同一數(shù)據(jù)庫(kù)時(shí),這顯得極為重要。
4、 合并分割數(shù)據(jù)
在有些情況下,由于表中數(shù)據(jù)量太大,故在表的設(shè)計(jì)時(shí)常將表進(jìn)行水平分割或垂直分割,但表的結(jié)構(gòu)的變化卻對(duì)應(yīng)用程序產(chǎn)生不良的影響。如果使用視圖就可以重新保持原有的結(jié)構(gòu)關(guān)系,從而使外模式保持不變,原有的應(yīng)用程序仍可以通過(guò)視圖來(lái)重載數(shù)據(jù)。
5、 安全性
視圖可以作為一種安全機(jī)制。通過(guò)視圖用戶只能查看和修改他們所能看到的數(shù)據(jù)。其它數(shù)據(jù)庫(kù)或表既不可見(jiàn)也不可以訪問(wèn)。如果某一用戶想要訪問(wèn)視圖的結(jié)果集,必須授予其訪問(wèn)權(quán)限。視圖所引用表的訪問(wèn)權(quán)限與視圖權(quán)限的設(shè)置互不影響。
看過(guò)“視圖的作用”的人還看了: