Oracle視圖的創(chuàng)建、使用以及刪除操作方法大全
前言
視圖就是一張或多張表上的預(yù)定義查詢(xún)。
視圖作用:減少子查詢(xún)的復(fù)雜性;提高運(yùn)行效率;可以?xún)H提供視圖數(shù)據(jù),提高數(shù)據(jù)的安全性。視圖以定義的方式存儲(chǔ)在數(shù)據(jù)庫(kù)中,不占用表空間。
查詢(xún)視圖的時(shí)候就是執(zhí)行視圖里封裝的邏輯,邏輯里用到的表稱(chēng)為 基表。
一、創(chuàng)建視圖
視圖的命名:通常結(jié)尾帶_V
。
視圖創(chuàng)建語(yǔ)法:
create or replace view 視圖名稱(chēng)_V as 查詢(xún)的邏輯 (select); -- with read only; 可以增加只讀屬性
二、查詢(xún)、刪除視圖
查詢(xún)視圖就是查詢(xún)視圖中封裝的sql邏輯的內(nèi)容
查看視圖的語(yǔ)法:
select * from 視圖名;
刪除視圖的語(yǔ)法:
DROP VIEW 視圖名_V;
三、視圖的優(yōu)點(diǎn)
- 可以簡(jiǎn)化日常操作
- 增加數(shù)據(jù)使用的安全性
- 減少網(wǎng)絡(luò)數(shù)據(jù)傳輸
- 可以增加只讀屬性(with read only),保障數(shù)據(jù)安全
例一:簡(jiǎn)化日常的操作 --將常用的SQL封裝到視圖中
步驟一:創(chuàng)建查詢(xún)視圖:
create or replace view aa_v as select f.deptno 部門(mén)編號(hào),f.dname 部門(mén)名稱(chēng) ,count(e.empno) 部門(mén)人數(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ù)(如工資,獎(jiǎng)金)
給用戶(hù)查看視圖bb_v權(quán)限,不給看emp表權(quán)限;
步驟一:創(chuàng)建查詢(xún)視圖:
create or replace view bb_v as select empno,ename,job,mgr,deptno from emp;
步驟二:查看視圖
select * from bb_v;
例三:視圖的修改
步驟一:創(chuàng)建查詢(xún)視圖:
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;
例四:視圖增加只讀屬性,防止別人對(duì)數(shù)據(jù)進(jìn)行修改
步驟一:創(chuàng)建查詢(xún)視圖:
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)建查詢(xún)視圖:
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; --查詢(xún)視圖就是查詢(xún)視圖中封裝的sql邏輯的內(nèi)容;
步驟三:視圖當(dāng)做表進(jìn)行過(guò)濾查詢(xún)
SELECT * FROM EMP_ENAME_V TWHERE T.EMPNO = 7369;
例六:視圖嵌套使用
步驟一:創(chuàng)建查詢(xún)視圖:
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)建查詢(xún)視圖:
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)丟失恢復(fù)的幾種方法總結(jié)
相信大家無(wú)論是開(kāi)發(fā)、測(cè)試還是運(yùn)維過(guò)程中,都可能會(huì)因?yàn)檎`操作、連錯(cuò)數(shù)據(jù)庫(kù)、用錯(cuò)用戶(hù)、語(yǔ)句條件有誤等原因,導(dǎo)致錯(cuò)誤刪除、錯(cuò)誤更新等問(wèn)題。當(dāng)你捶胸頓足或嚇得腿軟時(shí),肯定希望有辦法來(lái)恢復(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用戶(hù)密碼含有特殊字符導(dǎo)致無(wú)法登陸解決方法
在客戶(hù)端上使用sqlplus用普通用戶(hù)可以登錄,但是system以及sys用戶(hù)均無(wú)法登錄,提示ORA-12154: TNS: 無(wú)法解析指定的連接標(biāo)識(shí)符,本文將提供詳細(xì)的解決方法,需要了解的朋友可以參考下2012-11-11Oracle中備份表的簡(jiǎn)單sql命令語(yǔ)句
備份表的簡(jiǎn)單sql命令想必有黑多的新手朋友們還是會(huì)忘記的即便是老手也不例外吧,下面與大家分享下具體的sql語(yǔ)句,希望對(duì)你有所幫助2013-05-05oracle查看會(huì)話(huà)鎖定的所有對(duì)象代碼分享
oracle查看會(huì)話(huà)鎖定的所有對(duì)象2014-01-01LINUX下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ù)庫(kù)備份與還原
本文詳細(xì)講解了使用Oracle命令進(jìn)行數(shù)據(jù)庫(kù)備份與還原的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>2021-12-12oracle使用存儲(chǔ)過(guò)程將表數(shù)據(jù)以excel格式導(dǎo)出的操作方法
雖然目前pl/sql developer等數(shù)據(jù)庫(kù)客戶(hù)端軟件都支持將表數(shù)據(jù)以excel格式導(dǎo)出,但是如果數(shù)據(jù)量大,需要等客戶(hù)端加載表數(shù)據(jù)等待很久,這篇文章給大家分享oracle使用存儲(chǔ)過(guò)程將表數(shù)據(jù)以excel格式導(dǎo)出的操作方法,需要的朋友可以參考下2024-07-07