ORACLE 創建與使用視圖


一.what(什么是視圖?)

1.視圖是一種數據庫對象,是從一個或者多個數據表或視圖中導出的虛表,視圖所對應的數據並不真正地存儲在視圖中,而是存儲在所引用的數據表中,視圖的結構和數據是對數據表進行查詢的結果。
2.根據創建視圖時給定的條件,視圖可以是一個數據表的一部分,也可以是多個基表的聯合,它存儲了要執行檢索的查詢語句的定義,以便在引用該視圖時使用。

 

二.why(為什么要用視圖?視圖的優點)

1.簡化數據操作:視圖可以簡化用戶處理數據的方式。
2.着重於特定數據:不必要的數據或敏感數據可以不出現在視圖中。
3.視圖提供了一個簡單而有效的安全機制,可以定制不同用戶對數據的訪問權限。
4.提供向后兼容性:視圖使用戶能夠在表的架構更改時為表創建向后兼容接口。
5.自定義數據:視圖允許用戶以不同方式查看數據。
6.導出和導入數據:可使用視圖將數據導出到其他應用程序。
 
三.how(視圖的創建語法、刪除、demo)
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name   

[(alias[, alias]...)]   

AS subquery  

[WITH CHECK OPTION [CONSTRAINT constraint]]   

[WITH READ ONLY] 
OR REPLACE    :若所創建的試圖已經存在,ORACLE自動重建該視圖;
FORCE  :不管基表是否存在ORACLE都會自動創建該視圖;
NOFORCE   :只有基表都存在ORACLE才會創建該視圖:
alias :為視圖產生的列定義的別名;
subquery     :一條完整的SELECT語句,可以在該語句中定義別名;
WITH CHECK  OPTION :插入或修改的數據行必須滿足視圖定義的約束;
WITH READ ONLY :該視圖上不能進行任何DML操作。
CREATE  OR  REPLACE  VIEW  dept_sum_vw 
(name,minsal,maxsal,avgsal) 
AS 
SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal) 
FROM emp e,dept d 
WHERE  e.deptno=d.deptno 
GROUP  BY  d.dname; 
--給用戶授權創建視圖
-- grant create all view to zdgshr;      所有數據庫都能創建視圖的用戶
grant create view to zdgshr;

--創建簡單視圖
create view temp 
as 
select * from zd_member_basic_info;
--測試
select * from temp where rownum=1;

--創建簡單視圖:只讀
create or replace view temp1
as 
select id,job_number,name,dept_id from zd_member_basic_info 
with read only;
--測試
insert into temp1(id,job_number,name,dept_id) values(1,0,'張三',1300);

視圖的刪除:

            DROP VIEW  VIEW_NAME語句刪除視圖。
            刪除視圖的定義不影響基表中的數據。
            只有視圖所有者和具備DROP VIEW權限的用戶可以刪除視圖。
            視圖被刪除后,基於被刪除視圖的其他視圖或應用將無效。

 

四、視圖分為簡單視圖和復雜視圖。

簡單視圖只從單表里獲取數據;復雜視圖從多表里獲取數據。

簡單視圖不包含函數和數據組;復雜視圖包含函數和數據組。

簡單視圖可以實現DML操作;復雜視圖不可以。

create or replace view temp1
as 
select distinct name,job_number,dept_id from zd_member_basic_info 
with read only;
delete from zd_member_basic_info where name='而過';
create or replace view temp 
as 
select * from zd_member_basic_info order by name;

 

 


免責聲明!

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



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