真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何理解oracle視圖,oracle視圖使用

什么是視圖視圖的作用

視圖是指計算機(jī)數(shù)據(jù)庫中的視圖,是一個虛擬表,其內(nèi)容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。以下是由我整理關(guān)于什么是視圖的內(nèi)容,希望大家喜歡!

創(chuàng)新互聯(lián)專業(yè)做網(wǎng)站、網(wǎng)站制作,集網(wǎng)站策劃、網(wǎng)站設(shè)計、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營銷、軟文平臺等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計,讓網(wǎng)站在運行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。

視圖的含義

從用戶角度來看,一個視圖是從一個特定的角度來查看數(shù)據(jù)庫中的數(shù)據(jù)。從數(shù)據(jù)庫系統(tǒng)內(nèi)部來看,一個視圖是由SELECT語句組成的查詢定義的虛擬表。從數(shù)據(jù)庫系統(tǒng)內(nèi)部來看,視圖是由一張或多張表中的數(shù)據(jù)組成的,從數(shù)據(jù)庫系統(tǒng)外部來看,視圖就如同一張表一樣,對表能夠進(jìn)行的一般操作都可以應(yīng)用于視圖,例如查詢,插入,修改,刪除操作等。

視圖是一個虛擬表,其內(nèi)容由查詢定義。同真實的表一樣,視圖的作用類似于篩選。定義視圖的篩選可以來自當(dāng)前或 其它 數(shù)據(jù)庫的一個或多個表,或者其它視圖。分布式查詢也可用于定義使用多個異類源數(shù)據(jù)的視圖。

視圖是存儲在數(shù)據(jù)庫中的查詢的SQL 語句,它主要出于兩種原因:安全原因, 視圖可以隱藏一些數(shù)據(jù),如:社會 保險 基金表,可以用視圖只顯示姓名,地址,而不顯示社會保險號和工資數(shù)等,另一原因是可使復(fù)雜的查詢易于理解和使用。

視圖:查看圖形或文檔的方式。

視圖一經(jīng)定義便存儲在數(shù)據(jù)庫中,與其相對應(yīng)的數(shù)據(jù)并沒有像表那樣又在數(shù)據(jù)庫中再存儲一份,通過視圖看到的數(shù)據(jù)只是存放在基本表中的數(shù)據(jù)。對視圖的操作與對表的操作一樣,可以對其進(jìn)行查詢、修改(有一定的限制)、刪除。

當(dāng)對通過視圖看到的數(shù)據(jù)進(jìn)行修改時,相應(yīng)的基本表的數(shù)據(jù)也要發(fā)生變化,同時,若基本表的數(shù)據(jù)發(fā)生變化,則這種變化也可以自動地反映到視圖中。

視圖的種類區(qū)別

Oracle數(shù)據(jù)庫視圖的種類和區(qū)別

關(guān)系視圖:Oracle視圖是作為數(shù)據(jù)庫對象存在的,因此,創(chuàng)建之后也可以通過工具或數(shù)據(jù)字典來查看視圖的相關(guān)信息。這是大家常用的視圖,如:create view 視圖。

內(nèi)嵌視圖:在from語句中的可以把表改成一個子查詢,如:select a、id ,b、id from emp a,(select id from dept) b where a、id=b、id內(nèi)嵌視圖不屬于任何用戶,也不是對象,內(nèi)嵌視圖是子查詢的一種,可以與數(shù)據(jù)表、視圖一樣作為查詢語句的數(shù)據(jù)源存在,但在形式上有較大的區(qū)別,內(nèi)嵌視圖不必使用create view命令進(jìn)行創(chuàng)建,因此,在數(shù)據(jù)字典中也無法獲得相應(yīng)信息。內(nèi)嵌視圖的特點在于無須創(chuàng)建真正的數(shù)據(jù)庫對象,而只是封裝查詢,因此會節(jié)約數(shù)據(jù)庫資源,同時不會增加維護(hù)成本。但是內(nèi)嵌視圖不具有可復(fù)用性,因此當(dāng)預(yù)期將在多處調(diào)用到同一查詢定義時,還是應(yīng)該使用關(guān)系視圖。

對象視圖:對象類型在數(shù)據(jù)庫編程中有許多好處,但有時,應(yīng)用程序已經(jīng)開發(fā)完成。為了迎合對象類型而重建數(shù)據(jù)表是不現(xiàn)實的。對象視圖正是解決這一問題的優(yōu)秀策略。

對象視圖創(chuàng)建之后,同樣可以在數(shù)據(jù)字典中獲得其相應(yīng)信息。利用Oracle內(nèi)置視圖user_views可以獲得對象視圖相關(guān)信息。Oracle中的對象數(shù)據(jù)實際仍然以關(guān)系數(shù)據(jù)的形式存儲。但是,對象的特性,例如繼承、封裝等,都為開發(fā)人員提供了更加靈活的處理形式。同樣,可以構(gòu)造復(fù)雜的對象類型來封裝復(fù)雜的多表查詢。

物化視圖:常用于數(shù)據(jù)庫的容災(zāi),不是傳統(tǒng)意義上虛擬視圖,是實體化視圖,和表一樣可以存儲數(shù)據(jù)、查詢數(shù)據(jù)。主備數(shù)據(jù)庫數(shù)據(jù)同步通過物化視圖實現(xiàn),主備數(shù)據(jù)庫通過data link連接,在主備數(shù)據(jù)庫物化視圖進(jìn)行數(shù)據(jù)復(fù)制。當(dāng)主數(shù)據(jù)庫垮掉時,備數(shù)據(jù)庫接管,實現(xiàn)容災(zāi)。

視圖的作用

簡單性??吹降木褪切枰?。視圖不僅可以簡化用戶對數(shù)據(jù)的理解,也可以簡化他們的操作。那些被經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。

安全性。通過視圖用戶只能查詢和修改他們所能見到的數(shù)據(jù)。但不能授權(quán)到數(shù)據(jù)庫特定行和特定的列上。通過視圖,用戶可以被限制在數(shù)據(jù)的不同子集上:

使用權(quán)限可被限制在另一視圖的一個子集上,或是一些視圖和基表合并后的子集上。

邏輯數(shù)據(jù)獨立性。視圖可幫助用戶屏蔽真實表結(jié)構(gòu)變化帶來的影響。

視圖的優(yōu)點

1、 視點集中

視圖集中即是使用戶只關(guān)心它感興趣的某些特定數(shù)據(jù)和他們所負(fù)責(zé)的特定任務(wù)。這樣通過只允許用戶看到視圖中所定義的數(shù)據(jù)而不是視圖引用表中的數(shù)據(jù)而提高了數(shù)據(jù)的安全性。

2、 簡化操作

視圖大大簡化了用戶對數(shù)據(jù)的操作。因為在定義視圖時,若視圖本身就是一個復(fù)雜查詢的結(jié)果集,這樣在每一次執(zhí)行相同的查詢時,不必重新寫這些復(fù)雜的查詢語句,只要一條簡單的查詢視圖語句即可??梢娨晥D向用戶隱藏了表與表之間的復(fù)雜的連接操作。

3、 定制數(shù)據(jù)

視圖能夠?qū)崿F(xiàn)讓不同的用戶以不同的方式看到不同或相同的數(shù)據(jù)集。因此,當(dāng)有許多不同水平的用戶共用同一數(shù)據(jù)庫時,這顯得極為重要。

4、 合并分割數(shù)據(jù)

在有些情況下,由于表中數(shù)據(jù)量太大,故在表的設(shè)計時常將表進(jìn)行水平分割或垂直分割,但表的結(jié)構(gòu)的變化卻對應(yīng)用程序產(chǎn)生不良的影響。如果使用視圖就可以重新保持原有的結(jié)構(gòu)關(guān)系,從而使外模式保持不變,原有的應(yīng)用程序仍可以通過視圖來重載數(shù)據(jù)。

5、 安全性

視圖可以作為一種安全機(jī)制。通過視圖用戶只能查看和修改他們所能看到的數(shù)據(jù)。其它數(shù)據(jù)庫或表既不可見也不可以訪問。如果某一用戶想要訪問視圖的結(jié)果集,必須授予其訪問權(quán)限。視圖所引用表的訪問權(quán)限與視圖權(quán)限的設(shè)置互不影響。

在Oracle 中視圖和實例化視圖的區(qū)別是什么

視圖是本質(zhì)上是一張?zhí)摂M表,不包含任何數(shù)據(jù)。查看查詢的結(jié)果不任何地方都存儲在磁盤上,每次執(zhí)行查詢時,將重新創(chuàng)建該視圖。

實例化的視圖是實際結(jié)構(gòu)存儲在數(shù)據(jù)庫中,并寫入到磁盤。他們將基于參數(shù)定義它們在創(chuàng)建時進(jìn)行更新。

oracledba_viewstext怎么看

視圖的定義

視圖(view),也稱虛表, 不占用物理空間,這個也是相對概念,因為視圖本身的定義語句還是要存儲在數(shù)據(jù)字典里的。視圖只有邏輯定義。每次使用的時候, 只是重新執(zhí)行SQL.

視圖是從一個或多個實際表中獲得的,這些表的數(shù)據(jù)存放在數(shù)據(jù)庫中。那些用于產(chǎn)生視圖的表叫做該視圖的基表。一個視圖也可以從另一個視圖中產(chǎn)生。

視圖的定義存在數(shù)據(jù)庫中,與此定義相關(guān)的數(shù)據(jù)并沒有再存一份于數(shù)據(jù)庫中。通過視圖看到的數(shù)據(jù)存放在基表中。

視圖看上去非常象數(shù)據(jù)庫的物理表,對它的操作同任何其它的表一樣。當(dāng)通過視圖修改數(shù)據(jù)時,實際上是在改變基表中的數(shù)據(jù);相反地,基表數(shù)據(jù)的改變也會自動反映在由基表產(chǎn)生的視圖中。由于邏輯上的原因,有些Oracle視圖可以修改對應(yīng)的基表,有些則不能(僅僅能查詢)。

還有一種視圖:物化視圖(MATERIALIZED VIEW ),也稱實體化視圖,快照 (8i 以前的說法) ,它是含有數(shù)據(jù)的,占用存儲空間。 關(guān)于物化視圖,具體參考我的blog:

Oracle 物化視圖

javascript:void(0)

二. 視圖的作用

2.1 簡單性。

看到的就是需要的。視圖不僅可以簡化用戶對數(shù)據(jù)的理解,也可以簡化他們的操作。那些被經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。

2.2 安全性。

通過視圖用戶只能查詢和修改他們所能見到的數(shù)據(jù)。數(shù)據(jù)庫中的其它數(shù)據(jù)則既看不見也取不到。數(shù)據(jù)庫授權(quán)命令可以使每個用戶對數(shù)據(jù)庫的檢索限制到特定的數(shù)據(jù)庫對象上,但不能授權(quán)到數(shù)據(jù)庫特定行和特定的列上。通過Oracle視圖,用戶可以被限制在數(shù)據(jù)的不同子集上:

使用權(quán)限可被限制在基表的行的子集上。

使用權(quán)限可被限制在基表的列的子集上。

使用權(quán)限可被限制在基表的行和列的子集上。

使用權(quán)限可被限制在多個基表的連接所限定的行上。

使用權(quán)限可被限制在基表中的數(shù)據(jù)的統(tǒng)計匯總上。

使用權(quán)限可被限制在另一視圖的一個子集上,或是一些視圖和基表合并后的子集上。

視圖的安全性可以防止未授權(quán)用戶查看特定的行或列,是用戶只能看到表中特定行的方法如下:

1 在表中增加一個標(biāo)志用戶名的列;

2 建立Oracle視圖,是用戶只能看到標(biāo)有自己用戶名的行;

3 把視圖授權(quán)給其他用戶。

2.3 邏輯數(shù)據(jù)獨立性。

視圖可幫助用戶屏蔽真實表結(jié)構(gòu)變化帶來的影響。

視圖可以使應(yīng)用程序和數(shù)據(jù)庫表在一定程度上獨立。如果沒有視圖,應(yīng)用一定是建立在表上的。有了視圖之后,程序可以建立在視圖之上,從而程序與數(shù)據(jù)庫表被視圖分割開來。視圖可以在以下幾個方面使程序與數(shù)據(jù)獨立:

1 如果應(yīng)用建立在數(shù)據(jù)庫表上,當(dāng)數(shù)據(jù)庫表發(fā)生變化時,可以在表上建立視圖,通過視圖屏蔽表的變化,從而應(yīng)用程序可以不動。

2 如果應(yīng)用建立在數(shù)據(jù)庫表上,當(dāng)應(yīng)用發(fā)生變化時,可以在表上建立視圖,通過視圖屏蔽應(yīng)用的變化,從而使數(shù)據(jù)庫表不動。

3 如果應(yīng)用建立在視圖上,當(dāng)數(shù)據(jù)庫表發(fā)生變化時,可以在表上修改視圖,通過視圖屏蔽表的變化,從而應(yīng)用程序可以不動。

4 如果應(yīng)用建立在視圖上,當(dāng)應(yīng)用發(fā)生變化時,可以在表上修改視圖,通過視圖屏蔽應(yīng)用的變化,從而數(shù)據(jù)庫可以不動。

三. 視圖的基本語法:

CREATE[OR REPLACE][FORCE][NOFORCE]VIEW view_name

[(column_name)[,….n]]

AS

Select_statement

[WITH CHECK OPTION[CONSTRAINT constraint_name]]

[WITH READ ONLY]

說明:

view_name : ?視圖的名字

column_name: 視圖中的列名

在下列情況下 , 必須指定視圖列的名稱

* 由算術(shù)表達(dá)式 , 系統(tǒng)內(nèi)置函數(shù)或者常量得到的列

* 共享同一個表名連接得到的列

* 希望視圖中的列名與表中的列名不同的時候

REPLACE: ?如果創(chuàng)建視圖時, 已經(jīng)存在此視圖, 則重新創(chuàng)建此視圖, 相當(dāng)于覆蓋

FORCE: ?強(qiáng)制創(chuàng)建視圖, 無論的視圖所依賴的基表否存在或是否有權(quán)限創(chuàng)建

NOFORCE: ?只有基表存在且具有創(chuàng)建視圖權(quán)限時, 才可以創(chuàng)建視圖

WITH CHECK OPTION ?指出在視圖上所進(jìn)行的修改都要符合select_statement 所指定的限制條件

WITH READ ONLY ?只允許查看視圖

視圖的定義原則:

1. 視圖的查詢可以使用復(fù)雜的 SELECT 語法,包括連接 / 分組查詢和子查詢;

2. 在沒有 WITH CHECK OPTION 和 READ ONLY的情況下,查詢中不能使用

ORDER BY子句;

3. 如果沒有為 CHECK OPTION 約束命名,系統(tǒng)會自動為之命名,形式為 SYS_Cn;

4. OR REPLACE 選項可以不刪除原視圖便可更改其定義并重建,或重新授予對象

權(quán)限。

四. 視圖操作

視圖分為簡單視圖( 基于單個基表,且不包含函數(shù)和數(shù)據(jù)分組操作 ) 和復(fù)雜視圖( 基于多個基表或視圖).

簡單視圖可以通過視圖修改數(shù)據(jù). 這些修改包括插入數(shù)據(jù). 更新數(shù)據(jù)和刪除數(shù)據(jù). 但是對于復(fù)雜視圖來說, 通過視圖修改數(shù)據(jù)必須滿足一定的規(guī)則.

在視圖定義中沒有設(shè)定READ ONLY 的前提下, 如果視圖包含了下面的內(nèi)容, 那么不能通過視圖刪除表中的數(shù)據(jù):

* 分組函數(shù), 如SUM,AVG,MIN,MAX 等

*? GROUP BY 子句

* 包含了表達(dá)式

* ROWNUM 偽列

插入數(shù)據(jù)時, 除了滿足上面的條件外, 還需要保證那些沒有包含在視圖定義中的基表的列必須允許空值. 如果在視圖定義中還包含了WITH CHECK OPTION 子句, 那么對視圖的修改除了前面的那些原則外, 還必須滿足指定的約束條件. 個人認(rèn)為,視圖利于查詢,不利于修改.

1. 查詢視圖: 可依賴于多個基表.

SELECT ?* FROM view_name; /* 類似于查詢表數(shù)據(jù)*/

2. 更新視圖的前提:

沒有使用連接函數(shù), 集合運算和組函數(shù). 創(chuàng)建視圖的select 語句中沒有集合函數(shù)且沒有GROUP BY,ONNECT BY ,START WITH 子句及DISTINCT 關(guān)鍵字. 創(chuàng)建視圖的SELECT 語句中不包含從基表列通過計算所得的列. 創(chuàng)建視圖沒有包含只讀屬性.

3. 插入數(shù)據(jù)

INSERT ?INTO? view_name VALUES();

4. 修改數(shù)據(jù):

UPDATE? view_name SET …

若一個視圖依賴于多個基本表, 則一次修改該視圖只能修改一個基本表的數(shù)據(jù).

5. 刪除數(shù)據(jù):

Delete from view_name where …

同樣, 當(dāng)視圖依賴多個基表時, 不能使用此語句來刪除基表中的數(shù)據(jù). 只能刪除依賴一個基表的數(shù)據(jù).

6. 修改視圖定義:

修改視圖的好處在于, 所有相關(guān)的權(quán)限都依然存在. 語法同創(chuàng)建視圖相同.

7. 刪除視圖:

DROP VIEW view_name;

只有視圖所有者和具備DROP VIEW 權(quán)限的用戶可以刪除視圖。刪除視圖的定義不影響基表中的數(shù)據(jù)。視圖被刪除后,基于被刪除視圖的其他視圖或應(yīng)用將無效

Oracle中視圖和同義詞的區(qū)別

Oracle中視圖和同義詞的區(qū)別如下:

視圖和同義詞分別都是數(shù)據(jù)庫中的對象名稱,它們都不對應(yīng)實際的數(shù)據(jù)存儲,都依賴其他對象的存在而存在。

一、視圖:視圖可以被看成是虛擬表或存儲查詢。除非是索引視圖,否則視圖的數(shù)據(jù)不會作為非重復(fù)對象存儲在數(shù)據(jù)庫中。一般是基于一個或多個數(shù)據(jù)表經(jīng)數(shù)據(jù)查詢語句構(gòu)建而成;視圖可以再被用于數(shù)據(jù)查詢語句中。

二、同義詞:是架構(gòu)范圍內(nèi)的對象的另一名稱。通過使用同義詞,客戶端應(yīng)用程序可以使用由一部分組成的名稱來引用基對象,而不必使用由兩部分、三部分或四部分組成的名稱??梢岳斫鉃槭菍?shù)據(jù)庫中一個對象的快捷方式或者在特定范圍內(nèi)的別名;不限于數(shù)據(jù)表,幾乎所有的數(shù)據(jù)庫對象都可以建立同義詞。

1.視圖可以對應(yīng)一張或多張表,同義詞只能對應(yīng)一張表名稱

2.視圖可以設(shè)置其他約束條件

3.可以在同義詞上建立視圖:

例如,已經(jīng)存在一個名為synonym_city的同義詞和一個名為table_citys的表,可以創(chuàng)建視圖:CREATE OR REPLACE NOFORCE VIEW view_city AS SELECT * FROM synonym_city,table_citys;

4.可以通過對同義詞進(jìn)行任何DML操作,對表數(shù)據(jù)進(jìn)行插入、更新、刪除,通過對視圖只能進(jìn)行更新和刪除操作。

值得注意的是:視圖和同義詞都可以屏蔽用戶訪問其他用戶擁有的表。

例如:現(xiàn)在存在兩個用戶:scott、sys,以sys用戶登錄

創(chuàng)建跨用戶表的同義詞:

CREATE OR REPLACE PUBLIC SYNONYM SYN_EMP for scott.emp;

創(chuàng)建跨用戶的表的視圖:

CREATE OR REPLACE VIEW view_EMP AS SELECT * FROM scott.emp

然后進(jìn)行查詢操作:

SELECT * FROM SYN_EMP ;

SELECT * FROM view_EMP ;

查詢結(jié)果是一樣的。

oracle 視圖有什么用呢?

可以作為一個特定查詢,使用戶可以重復(fù)使用,比如,建立一個查詢工資大于某個值的員工名單的視圖,這樣每個操作員就可以直接使用這個視圖來查詢,而不是每個人都要輸入復(fù)雜的select語句;

另外,基于安全考慮,可以針對特定的視圖賦給用戶權(quán)限,而不是給用戶賦給一個或幾個表的權(quán)限,這樣可以避免誤操作更新數(shù)據(jù)的不安全因素。


當(dāng)前名稱:如何理解oracle視圖,oracle視圖使用
當(dāng)前地址:http://weahome.cn/article/hcdped.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部