子查詢的作用:查詢條件未知的事物
創(chuàng)新互聯(lián)建站企業(yè)建站,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對于成都網(wǎng)站建設(shè)、成都做網(wǎng)站中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準(zhǔn)市場調(diào)研,為客戶提供的解決方案。
查詢條件已知的問題:例如:查詢工資為800的員工信息
查詢條件未知的問題:例如:查詢工資為20號(hào)部門平均工資的員工信息
一個(gè)條件未知的問題,可以分解為多個(gè)條件已知的問題
查詢工資比WARD高的員工信息
第一:查詢WARD的工資?
select sal from emp where ename = 'WARD';
第二:查詢工資比1250高的員工信息?
select * from emp where sal > 1250;
子查詢:
select * from emp where sal > ( select sal from emp where ename = 'WARD' );
查詢'SALES'部門的員工信息(方式一:子查詢)
第一:查詢部門名為'SALES'的編號(hào)?
select deptno from dept where dname = 'SALES';
第二:查詢部門號(hào)為30的員工信息?
select * from emp where deptno = 30;
子查詢:
select * from emp where deptno = ( select deptno from dept where dname = 'SALES' );
子查詢細(xì)節(jié):
1)子查詢與父查詢可以針對同一張表
2)子查詢與父查詢可以針對不同張表
3) 子查詢與父查詢在傳統(tǒng)參數(shù)時(shí),數(shù)量要相同
4) 子查詢與父查詢在傳統(tǒng)參數(shù)時(shí),類型要相同
5) 子查詢與父查詢在傳統(tǒng)參數(shù)時(shí),含義要相同
查詢部門名為'SALES'的員工信息(方式二:多表查詢)
select emp.* from dept,emp where (dept.deptno=emp.deptno) and (dept.dname='SALES');
查詢每個(gè)員工編號(hào),姓名,部門名,工資等級(jí)(三表查詢,這三張表并無外健關(guān)聯(lián))
select e.empno,e.ename,d.dname,s.grade from emp e,dept d,salgrade s where (e.deptno=d.deptno) and (e.sal between s.losal and s.hisal);
查詢工資最低的員工信息(單行子查詢,使用=號(hào))
第一:查詢出工資最低是多少?
select min(sal) from emp;
第二:查詢工資為800的員工信息?
select * from emp where sal = 800;
子查詢:
select * from emp where sal = ( select min(sal) from emp );
查詢部門名為'ACCOUNTING'或'SALES'的員工信息(多行子查詢,使用in關(guān)鍵字)
第一:查詢部門名為'ACCOUNTING'或'SALES'的部門編號(hào)?
select deptno from dept where dname in ('ACCOUNTING','SALES');
第二:查詢部門號(hào)為10或30號(hào)的員工信息?
select * from emp where deptno in (10,30);
子查詢:
select * from emp where deptno in ( select deptno from dept where dname in ('ACCOUNTING','SALES') );
查詢工資比20號(hào)部門【任意any】一個(gè)員工工資【低<】的員工信息(多行子查詢,使用any關(guān)鍵字)
第一:查詢20號(hào)部門的所有工資?
select sal from emp where deptno = 20;
第二:查詢工資比(800,2975,3000,1100,3000)任意一個(gè)低的員工信息?
select * from emp where sal < any (800,2975,3000,1100,3000);
在oracle看來,<any就等于<集合中最大的那個(gè)值
子查詢:
select * from emp where sal <any ( select sal from emp where deptno = 20 );
查詢工資比30號(hào)部門【所有all】員工【低<】的員工信息(多行子查詢,使用all關(guān)鍵字)
第一:查詢出30部門所有員工的工資?
select sal from emp where deptno = 30;
第二:查詢工資比(1600,1250,1250,2850,1500,950)中所有的工資都低的員工信息?
select * from emp where sal <all (1600,1250,1250,2850,1500,950);
子查詢:
select * from emp where sal <all ( select sal from emp where deptno = 30 );
注意:不容易理解的幾個(gè)概念 單行函數(shù):輸入一個(gè)參數(shù),輸出一個(gè)結(jié)果 多行函數(shù):掃描多個(gè)參數(shù),輸出一個(gè)結(jié)果 單行子查詢:子查詢只會(huì)返回一個(gè)結(jié)果,例如:800,父查詢用=/<>/>=/<=這些符號(hào)來比較 多行子查詢:子查詢會(huì)返回多于一個(gè)結(jié)果,例如:30,20,父查詢用in/any/all這些符號(hào)來比較 |
當(dāng)多表查詢,子查詢同時(shí)能解決問題時(shí),按如下優(yōu)先方案選擇: 多表查詢-->子查詢 注意:上述結(jié)果不是說多表查詢可以替代子查詢,某些情況下,只能用子查詢解決,例如:oracle分頁 |
當(dāng)前名稱:Oracle系列:(14)子查詢
文章URL:http://jinyejixie.com/article20/jpdejo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、關(guān)鍵詞優(yōu)化、自適應(yīng)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、App設(shè)計(jì)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)