Oracle基礎(chǔ)學(xué)習(xí)之子查詢(xún)
首先使用子查詢(xún)的時(shí)候注意事項(xiàng)包括,子查詢(xún)可以嵌套多層和子查詢(xún)需要圓括號(hào)()括起來(lái),下面我們來(lái)看看詳細(xì)的介紹。
基礎(chǔ)介紹
1,wherer:子查詢(xún)一般會(huì)返回單行單列 單行多列 多行單列 ;
2,having:子查詢(xún)會(huì)返回單行單列,同時(shí)表示要使用統(tǒng)計(jì)函數(shù);
3,from:子查詢(xún)返回多行多列數(shù)據(jù)(表結(jié)構(gòu));
4,select:返回單行單列 (一般不使用);
示例詳解
where(進(jìn)行數(shù)據(jù)行的篩選操作):
a:查詢(xún)出低于公司平均工資的雇員信息。
select * from emp where sal<(select avg(sal) from emp);
以上的查詢(xún)返回單行單列可以作為where子句的過(guò)濾條件使用;
b:查詢(xún)公司最早雇傭的雇員的信息。
select * from emp where hiredate= (select MIN(hiredate) from emp);
C:查詢(xún)與scott從事同一工作并且工資相同的雇員信息。
select* from emp where (job,sal) =( select job,sal from emp where ename ='scott') and ename <>'scott';
in:指的是與子查詢(xún)返回的內(nèi)容相同。
select * from emp where sal in (select sal from emp where job = 'manager');
not in:
select* from emp where sal not in(select sal from emp where job='manager');
子查詢(xún)中不能有空。
any:
select* from emp where sal = any(select sal from emp where job='manager'); select* from emp where sal > any(select sal from emp where job='manager');
比子查詢(xún)的返回的最大值要大
select* from emp where sal < any(select sal from emp where job='manager');
比子查詢(xún)返回的最大值要小
all:
<all :比子查詢(xún)的返回的最小值要小
all :比子查詢(xún)的返回的最大值要大
where子查詢(xún)的幾率很高;
having:
查詢(xún)出高于公司平均工資的職位名稱(chēng) 職位人數(shù) 平均工資。
select job,count(empno),avg(sal) from emp group by job having avg(sal)>(select avg(sal) from emp);
select(一般不用):
查詢(xún)每個(gè)雇員的編號(hào)姓名 職位 部門(mén)名稱(chēng)。
select e.empno,e.ename,e.job, (select d.dname from dept d whered.deptno=e.deptno)from emp e;
(1+n) 次查詢(xún);
from(重點(diǎn)):
查詢(xún)出每個(gè)部門(mén)的名稱(chēng) 位置 部門(mén)人數(shù)。
select d.dname,d.loc,count(e.empno) from emp e,dept d where e.deptno(+)=d.deptno group by d.dname,d.loc;
(多表查詢(xún))
分步1: select d.deptno,d.dname,d.locfrom dept d; 分步2:select deptno,count(empno)from emp group by deptno; 正確的查詢(xún): select d.deptno,d.dname,d.loc,temp.count from dept d,(select deptno,count(empno) count from emp group by deptno) temp where d.deptno=temp.deptno(+);
多表查詢(xún)和子查詢(xún)都能實(shí)現(xiàn)統(tǒng)計(jì),那么那種方式更好呢?
答:在實(shí)際的工作當(dāng)中,子查詢(xún)的主要目地是解決多表查詢(xún)的性能問(wèn)題,所以在開(kāi)發(fā)中使用的是 最多的。最大作用是解決多表查詢(xún)帶來(lái)的笛卡爾積影響性能的問(wèn)題。
復(fù)雜查詢(xún)= 簡(jiǎn)單查詢(xún)+限定查詢(xún)+ 多表查詢(xún)+ 分組統(tǒng)計(jì)查詢(xún) +子查詢(xún);
總結(jié)
以上就是關(guān)于Oracle子查詢(xún)的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用Oracle能有所幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
Oracle刪除重復(fù)的數(shù)據(jù),Oracle數(shù)據(jù)去重復(fù)
這篇文章主要介紹了Oracle刪除重復(fù)的數(shù)據(jù),Oracle數(shù)據(jù)去重復(fù),需要的朋友可以參考下2016-08-08Windows系統(tǒng)下Oracle?12c安裝保姆級(jí)圖文教程詳解
這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下Oracle?12c安裝保姆級(jí)圖文教程的相關(guān)資料,Oracle數(shù)據(jù)庫(kù)12c的安裝是一個(gè)復(fù)雜的過(guò)程,但通過(guò)正確的安裝前置條件的準(zhǔn)備,精心的安裝過(guò)程確實(shí)可以讓Oracle?12c穩(wěn)定、高效地運(yùn)行在各類(lèi)操作系統(tǒng)中,需要的朋友可以參考下2023-09-09delete archivelog all無(wú)法清除歸檔日志解決方法
最近在因歸檔日志暴增,使用delete archivelog all貌似無(wú)法清除所有的歸檔日志,究竟是什么原因呢?本文將為您解答,需要的朋友可以參考下2012-12-12Oracle?ORA-00904:標(biāo)識(shí)符無(wú)效解決方法(太坑了!!)
最近執(zhí)行sql時(shí)oracle報(bào)錯(cuò)ORA-00904:標(biāo)識(shí)符無(wú)效,所以這篇文章主要給大家介紹了關(guān)于Oracle?ORA-00904:標(biāo)識(shí)符無(wú)效解決方法的相關(guān)資料,需要的朋友可以參考下2022-10-10oracle的導(dǎo)入導(dǎo)出注意事項(xiàng)及心得分享
導(dǎo)入導(dǎo)出oracle方案是備份和恢復(fù)的主旋律,有一點(diǎn)點(diǎn)在使用過(guò)程中的體會(huì),在此與大家分享下,希望對(duì)大家有所幫助2013-09-09oracle自動(dòng)巡檢腳本生成html報(bào)告的方法
這篇文章主要介紹了oracle自動(dòng)巡檢腳本生成html報(bào)告的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Oracle用戶(hù)密碼過(guò)期如何修改永不過(guò)期
針對(duì)不同的業(yè)務(wù)場(chǎng)景會(huì)有不一樣的業(yè)務(wù)需求,oracle的用戶(hù)密碼,生產(chǎn)環(huán)境肯定需要定期進(jìn)行更換,保證安全性,但是也同樣會(huì)有需求要求oracle用戶(hù)的密碼永遠(yuǎn)不過(guò)期,這篇文章主要給大家介紹了關(guān)于Oracle用戶(hù)密碼過(guò)期如何修改永不過(guò)期的相關(guān)資料,需要的朋友可以參考下2024-03-03