主頁(yè) > 知識(shí)庫(kù) > oracle中的視圖詳解

oracle中的視圖詳解

熱門標(biāo)簽:服務(wù)外包 Linux服務(wù)器 地方門戶網(wǎng)站 百度競(jìng)價(jià)排名 網(wǎng)站排名優(yōu)化 AI電銷 呼叫中心市場(chǎng)需求 鐵路電話系統(tǒng)
1.視圖的概述

視圖其實(shí)就是一條查詢sql語(yǔ)句,用于顯示一個(gè)或多個(gè)表或其他視圖中的相關(guān)數(shù)據(jù)。視圖將一個(gè)查詢的結(jié)果作為一個(gè)表來使用,因此視圖可以被看作是存儲(chǔ)的查詢或一個(gè)虛擬表。視圖來源于表,所有對(duì)視圖數(shù)據(jù)的修改最終都會(huì)被反映到視圖的基表中,這些修改必須服從基表的完整性約束,并同樣會(huì)觸發(fā)定義在基表上的觸發(fā)器。(Oracle支持在視圖上顯式的定義觸發(fā)器和定義一些邏輯約束)

2.視圖的存儲(chǔ)

與表不同,視圖不會(huì)要求分配存儲(chǔ)空間,視圖中也不會(huì)包含實(shí)際的數(shù)據(jù)。視圖只是定義了一個(gè)查詢,視圖中的數(shù)據(jù)是從基表中獲取,這些數(shù)據(jù)在視圖被引用時(shí)動(dòng)態(tài)的生成。由于視圖基于數(shù)據(jù)庫(kù)中的其他對(duì)象,因此一個(gè)視圖只需要占用數(shù)據(jù)字典中保存其定義的空間,而無需額外的存儲(chǔ)空間。

3.視圖的作用

用戶可以通過視圖以不同形式來顯示基表中的數(shù)據(jù),視圖的強(qiáng)大之處在于它能夠根據(jù)不同用戶的需要來對(duì)基表中的數(shù)據(jù)進(jìn)行整理。視圖常見的用途如下:

通過視圖可以設(shè)定允許用戶訪問的列和數(shù)據(jù)行,從而為表提供了額外的安全控制

隱藏?cái)?shù)據(jù)復(fù)雜性

視圖中可以使用連接(join),用多個(gè)表中相關(guān)的列構(gòu)成一個(gè)新的數(shù)據(jù)集。此視圖就對(duì)用戶隱藏了數(shù)據(jù)來源于多個(gè)表的事實(shí)。
 
簡(jiǎn)化用戶的SQL 語(yǔ)句

用戶使用視圖就可從多個(gè)表中查詢信息,而無需了解這些表是如何連接的。
 
以不同的角度來顯示基表中的數(shù)據(jù)

視圖的列名可以被任意改變,而不會(huì)影響此視圖的基表
 
使應(yīng)用程序不會(huì)受基表定義改變的影響

在一個(gè)視圖的定義中查詢了一個(gè)包含4 個(gè)數(shù)據(jù)列的基表中的3 列。當(dāng)基表中添加了新的列后,由于視圖的定義并沒有被影響,因此使用此視圖的應(yīng)用程序也不會(huì)被影響。
 
保存復(fù)雜查詢

一個(gè)查詢可能會(huì)對(duì)表數(shù)據(jù)進(jìn)行復(fù)雜的計(jì)算。用戶將這個(gè)查詢保存為視圖之后,每次進(jìn)行類似計(jì)算只需查詢此視圖即可。
邏輯數(shù)據(jù)獨(dú)立性

視圖可以使應(yīng)用程序和數(shù)據(jù)庫(kù)表在一定程度上獨(dú)立。如果沒有視圖,應(yīng)用一定是建立在表上的。有了視圖之后,程序可以建立在視圖之上,從而程序與數(shù)據(jù)庫(kù)表被視圖分割開來。
4.視圖的工作機(jī)制

視圖的定義就是其使用的查詢語(yǔ)句,Oracle 將這個(gè)定義以文本形式存儲(chǔ)在數(shù)據(jù)字典中。當(dāng)用戶在 SQL 語(yǔ)句中引用了視圖時(shí),Oracle 將進(jìn)行以下工作:

將引用了視圖的語(yǔ)句與視圖的定義語(yǔ)句整合為一個(gè)語(yǔ)句
在共享SQL 區(qū)解析整合后的語(yǔ)句
執(zhí)行此語(yǔ)句
當(dāng)現(xiàn)有的共享SQL 區(qū)中沒有與整合后的語(yǔ)句一致時(shí),Oracle 才會(huì)為此語(yǔ)句創(chuàng)建新的共享SQL 區(qū)。因此,引用了視圖的SQL 語(yǔ)句也能夠利用已有的共享 SQL 區(qū)以達(dá)到節(jié)約內(nèi)存和提高性能的目的。

5.視圖的依賴性

由于視圖的定義是一個(gè)引用了其他對(duì)象(表,視圖)的查詢,因此視圖依賴于其所引用的對(duì)象。Oracle 會(huì)自動(dòng)地處理視圖的依賴性。例如,當(dāng)用戶移除了一個(gè)視圖的基表后再重建此表,Oracle 將檢查新的基表是否符合視圖的定義并判斷視圖的有效性。

6.可更新的連接視圖

連接視圖是指在一個(gè)視圖的定義查詢的from字句中引用了多個(gè)表或視圖。而可更新的連接視圖是指能夠執(zhí)行 UPDATE,INSERT,和 DELETE 操作的連接視圖。為了保證視圖是可更新的,其定義中不能包含以下語(yǔ)法結(jié)構(gòu):

集合操作符
DISTINCT 操作符
聚合函數(shù)或分析型函數(shù)
GROUP BY,ORDER BY,CONNECT BY,或 START WITH 字句
在 SELECT 之后的列表中使用集合表達(dá)式
在 SELECT 之后的列表中使用子查詢
連接(join)(但是有例外情況)
對(duì)于不可更新的視圖,可以利用 INSTEAD OF 觸發(fā)器對(duì)其數(shù)據(jù)進(jìn)行修改。
您可能感興趣的文章:
  • Oracle Scott創(chuàng)建視圖權(quán)限不足解決辦法
  • oracle 視圖權(quán)限 oracle 創(chuàng)建視圖權(quán)限不足
  • 在Oracle中向視圖中插入數(shù)據(jù)的方法
  • Oracle創(chuàng)建帶有參數(shù)的視圖代碼介紹

標(biāo)簽:崇左 湖南 湘潭 蘭州 銅川 衡水 黃山 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《oracle中的視圖詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266