pl/sql

創(chuàng)新互聯(lián)建站致力于網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計,成都網(wǎng)站設(shè)計,集團網(wǎng)站建設(shè)等服務(wù)標準化,推過標準化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇創(chuàng)新互聯(lián)建站,就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!
developer
選中這個物化視圖,然后點擊查看,就能看到創(chuàng)建這個物化視圖的語句了
pl/sql
windows
中輸入這個物化視圖名稱有,鼠標右鍵同樣可以查看這個物化視圖的創(chuàng)建語句
dbms_metadata.get_ddl
這個函數(shù)也可以
視圖是沒有結(jié)構(gòu)查詢語句的。因為試圖就是一個別名,如果真的想查,那么可以通過
select * from user_tab_columns where TABLE_NAME='視圖名';查詢,這里不僅有表的信息,也有視圖的相關(guān)信息。
視圖的定義
視圖(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ù)庫的物理表,對它的操作同任何其它的表一樣。當通過視圖修改數(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 在表中增加一個標志用戶名的列;
2 建立Oracle視圖,是用戶只能看到標有自己用戶名的行;
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ù)庫表上,當數(shù)據(jù)庫表發(fā)生變化時,可以在表上建立視圖,通過視圖屏蔽表的變化,從而應(yīng)用程序可以不動。
2 如果應(yīng)用建立在數(shù)據(jù)庫表上,當應(yīng)用發(fā)生變化時,可以在表上建立視圖,通過視圖屏蔽應(yīng)用的變化,從而使數(shù)據(jù)庫表不動。
3 如果應(yīng)用建立在視圖上,當數(shù)據(jù)庫表發(fā)生變化時,可以在表上修改視圖,通過視圖屏蔽表的變化,從而應(yīng)用程序可以不動。
4 如果應(yī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ù)表達式 , 系統(tǒng)內(nèi)置函數(shù)或者常量得到的列
* 共享同一個表名連接得到的列
* 希望視圖中的列名與表中的列名不同的時候
REPLACE: ?如果創(chuàng)建視圖時, 已經(jīng)存在此視圖, 則重新創(chuàng)建此視圖, 相當于覆蓋
FORCE: ?強制創(chuàng)建視圖, 無論的視圖所依賴的基表否存在或是否有權(quán)限創(chuàng)建
NOFORCE: ?只有基表存在且具有創(chuàng)建視圖權(quán)限時, 才可以創(chuàng)建視圖
WITH CHECK OPTION ?指出在視圖上所進行的修改都要符合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 子句
* 包含了表達式
* ROWNUM 偽列
插入數(shù)據(jù)時, 除了滿足上面的條件外, 還需要保證那些沒有包含在視圖定義中的基表的列必須允許空值. 如果在視圖定義中還包含了WITH CHECK OPTION 子句, 那么對視圖的修改除了前面的那些原則外, 還必須滿足指定的約束條件. 個人認為,視圖利于查詢,不利于修改.
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 …
同樣, 當視圖依賴多個基表時, 不能使用此語句來刪除基表中的數(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中用PL/SQL找到對應(yīng)的視圖,然后右擊點“編輯”,就可以看到有哪些表了。
文章題目:怎么看oracle視圖 oracle怎么查看視圖語句
文章位置:http://chinadenli.net/article10/hgpddo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、靜態(tài)網(wǎng)站、網(wǎng)站制作、、微信公眾號、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)