Oracle視圖的創(chuàng)建、使用以及刪除操作方法大全
前言
視圖就是一張或多張表上的預(yù)定義查詢。
視圖作用:減少子查詢的復(fù)雜性;提高運(yùn)行效率;可以僅提供視圖數(shù)據(jù),提高數(shù)據(jù)的安全性。視圖以定義的方式存儲在數(shù)據(jù)庫中,不占用表空間。
查詢視圖的時(shí)候就是執(zhí)行視圖里封裝的邏輯,邏輯里用到的表稱為 基表。
一、創(chuàng)建視圖
視圖的命名:通常結(jié)尾帶_V
。
視圖創(chuàng)建語法:
create or replace view 視圖名稱_V as 查詢的邏輯 (select); -- with read only; 可以增加只讀屬性
二、查詢、刪除視圖
查詢視圖就是查詢視圖中封裝的sql邏輯的內(nèi)容
查看視圖的語法:
select * from 視圖名;
刪除視圖的語法:
DROP VIEW 視圖名_V;
三、視圖的優(yōu)點(diǎn)
- 可以簡化日常操作
- 增加數(shù)據(jù)使用的安全性
- 減少網(wǎng)絡(luò)數(shù)據(jù)傳輸
- 可以增加只讀屬性(with read only),保障數(shù)據(jù)安全
例一:簡化日常的操作 --將常用的SQL封裝到視圖中
步驟一:創(chuàng)建查詢視圖:
create or replace view aa_v as select f.deptno 部門編號,f.dname 部門名稱 ,count(e.empno) 部門人數(shù) , avg(e.sal) 平均工資,max(e.sal) 最大工資,min(e.sal) 最小工資,sum(e.sal) 工資總和 from dept f left join emp e on f.deptno=e.deptno group by f.deptno,f.dname order by f.deptno;
步驟二:查看視圖
select * from aa_v;
例二:增加數(shù)據(jù)的安全性 --屏蔽掉私密數(shù)據(jù)(如工資,獎金)
給用戶查看視圖bb_v權(quán)限,不給看emp表權(quán)限;
步驟一:創(chuàng)建查詢視圖:
create or replace view bb_v as select empno,ename,job,mgr,deptno from emp;
步驟二:查看視圖
select * from bb_v;
例三:視圖的修改
步驟一:創(chuàng)建查詢視圖:
create table emp_111 as select * from emp; create or replace view cc_v as select empno,ename,job,mgr,deptno from emp_111;
步驟二:查看視圖
select * from cc_v;
步驟三:修改視圖
update cc_v set deptno=50 where empno=7788; commit; --提交
步驟四:再次查看視圖
視圖數(shù)據(jù)發(fā)生了改變
select * from cc_v;
查看原表中的數(shù)據(jù),發(fā)現(xiàn)原表的數(shù)據(jù)也發(fā)生了改變。
select * from emp_111;
例四:視圖增加只讀屬性,防止別人對數(shù)據(jù)進(jìn)行修改
步驟一:創(chuàng)建查詢視圖:
create or replace view dd_v as select empno,ename,job,mgr,deptno from emp_111 with read only; --加上只讀屬性
步驟二:查看視圖
select * from dd_v;
步驟三:嘗試修改只可讀視圖
發(fā)現(xiàn)修改視圖內(nèi)容報(bào)錯(cuò)誤。
update cc_v set deptno=50 where empno=7788; commit; --提交
例五:視圖當(dāng)表用
步驟一:創(chuàng)建查詢視圖:
CREATE OR REPLACE VIEW EMP_ENAME_V AS SELECT T.EMPNO ,T.ENAME ,T.DEPTNO ---函數(shù)返回的結(jié)果一定要給別名 ,TO_CHAR(T.HIREDATE,'YYYY') as rz_year FROM EMP T; --基表
步驟二:查看視圖
select * from EMP_ENAME_V; --查詢視圖就是查詢視圖中封裝的sql邏輯的內(nèi)容;
步驟三:視圖當(dāng)做表進(jìn)行過濾查詢
SELECT * FROM EMP_ENAME_V TWHERE T.EMPNO = 7369;
例六:視圖嵌套使用
步驟一:創(chuàng)建查詢視圖:
CREATE OR REPLACE VIEW EMP_DEPT_V AS SELECT T.EMPNO ,T.ENAME ,T2.DNAME FROM EMP_ENAME_V T INNER JOIN DEPT T2 ON T.DEPTNO = T2.DEPTNO;
步驟二:查看視圖
SELECT * FROM EMP_DEPT_V;
刪除視圖
DROP VIEW EMP_DEPT_V;
例七:with as 結(jié)合視圖使用
步驟一:創(chuàng)建查詢視圖:
create or replace view hh_v as with table1 as(select * from emp where deptno=10), table2 as(select * from emp where deptno=20), table3 as(select* from dept) select e.*,f.dname,f.loc from table1 e inner join table3 f on e.deptno = f.deptno;
步驟二:查看視圖
select * from hh_v;
附:如何使用Oracle創(chuàng)建多表視圖?
總結(jié)
到此這篇關(guān)于Oracle視圖的創(chuàng)建、使用以及刪除操作方法大全的文章就介紹到這了,更多相關(guān)Oracle視圖創(chuàng)建使用及刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle數(shù)據(jù)庫數(shù)據(jù)丟失恢復(fù)的幾種方法總結(jié)
相信大家無論是開發(fā)、測試還是運(yùn)維過程中,都可能會因?yàn)檎`操作、連錯(cuò)數(shù)據(jù)庫、用錯(cuò)用戶、語句條件有誤等原因,導(dǎo)致錯(cuò)誤刪除、錯(cuò)誤更新等問題。當(dāng)你捶胸頓足或嚇得腿軟時(shí),肯定希望有辦法來恢復(fù)這些數(shù)據(jù)。oracle就提供了一些強(qiáng)大的方法或機(jī)制,可以幫到有需要的你。2016-12-12Oracle Linux 6.8安裝 mysql 5.7.17的詳細(xì)教程
這篇文章主要介紹了Oracle Linux 6.8安裝 mysql 5.7.17的詳細(xì)教程,需要的朋友可以參考下2017-06-06Oracle用戶密碼含有特殊字符導(dǎo)致無法登陸解決方法
在客戶端上使用sqlplus用普通用戶可以登錄,但是system以及sys用戶均無法登錄,提示ORA-12154: TNS: 無法解析指定的連接標(biāo)識符,本文將提供詳細(xì)的解決方法,需要了解的朋友可以參考下2012-11-11LINUX下Oracle數(shù)據(jù)導(dǎo)入導(dǎo)出的方法詳解
這篇文章主要介紹了LINUX下Oracle數(shù)據(jù)導(dǎo)入導(dǎo)出的方法,較為詳細(xì)的分析導(dǎo)出工具exp及導(dǎo)入工具imp的具體使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12使用Oracle命令進(jìn)行數(shù)據(jù)庫備份與還原
本文詳細(xì)講解了使用Oracle命令進(jìn)行數(shù)據(jù)庫備份與還原的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2021-12-12oracle使用存儲過程將表數(shù)據(jù)以excel格式導(dǎo)出的操作方法
雖然目前pl/sql developer等數(shù)據(jù)庫客戶端軟件都支持將表數(shù)據(jù)以excel格式導(dǎo)出,但是如果數(shù)據(jù)量大,需要等客戶端加載表數(shù)據(jù)等待很久,這篇文章給大家分享oracle使用存儲過程將表數(shù)據(jù)以excel格式導(dǎo)出的操作方法,需要的朋友可以參考下2024-07-07