oracle視圖創建


Oracle視圖(view)創建使用

視圖是一張虛擬表,其內容由查詢定義,同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖並不在數據庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,並且在引用視圖時動態生成。(視圖不是真實存在磁盤上的)

一、視圖與表的區別

1、表需要占用磁盤空間,視圖不需要
2、視圖不能添加索引(所以查詢速度略微慢點)
3、使用視圖可以簡化,復雜查詢
4、視圖的使用利於提高安全性
比如:不同用戶查看不同視圖

創建,修改,刪除視圖的基本操作

二、創建視圖

語法結構:

CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW   視圖名

AS

SELECT查詢   (需要查詢的結果)                                       

[WITH READ ONLY CONSTRAINT] (設置是否可以對視圖進行增刪改查)

 

語法解析:

1. OR REPLACE:如果視圖已經存在,則替換舊視圖。

2. FORCE:即使基表不存在,也可以創建該視圖,但是該視圖不能正常使用,當基表創建成功后,視圖才能正常使用。

3. NOFORCE:如果基表不存在,無法創建視圖,該項是默認選項。

4. WITH READ ONLY:默認可以通過視圖對基表執行增刪改操作,但是有很多在基表上的限制(比如:基表中某列不能為空,但是該列沒有出現在視圖中,則不能通過視圖執行insert操作),WITH READ ONLY說明視圖是只讀視圖,不能通過該視圖進行增刪改操作。現實開發中,基本上不通過視圖對表中的數據進行增刪改操作。

三、刪除視圖

1、drop view 視圖名

四、查詢視圖

查詢視圖和正常sql是一樣的

 

Oracle 創建視圖時報錯,報ora-01031:insufficient privileges

在創建用戶的時候如果直接給用戶DBA權限,那么在B用戶中可以直接查詢A用戶的表,但是在創建視圖時就會報無權限,在這種情況下需要再在被訪問的A用戶里面去給予要訪問該表的B用戶授權。 
--創建視圖權限,一般網上找都是說的這句,但是光有這句還是無法創建 
grant create  view to B; 
--授予查詢權限 
grant select any table to B; 
--授予權限 
grant select any dictionary to B; 
以上3項地后就能正常創建視圖了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM