顾美玲勾引管家|日韩黄色成人|国产精品theporn动漫|欧美日日日|国产精品探花在线

專業只做數據庫實訓和認證的品牌機構

微信公眾號新浪微博
免費咨詢電話:400-0909-964
當前位置: 網站首頁 > DBA實戰 > DBA課程 > Oracle子查詢:where/from/having子查詢

Oracle子查詢:where/from/having子查詢

文章來源: 更新時間:2020/3/13 17:35:21

在線老師點擊咨詢:

最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!

我要咨詢

一般情況下:

WHERE:子查詢一般只返回單行單列、多行單列、單行多列的數據;

FROM:子查詢返回的一般是多行多列的數據,當作一張臨時表出現。

HAVING:子查詢返回的一般是單行單列數據。


子查詢在 WHERE 中出現


1.返回 單行單列 數據

范例一: 查詢出工資比SMITH還要高的全部雇員信息

SELECT * FROM EMP WHERE sal>(SELECT sal FROM EMP WHERE ename='SMITH');


2.子查詢返回 單行多列 數據

以上所返回的是單行單列,但是在子查詢之中,也可以返回單行多列的數據,只是這種子查詢很少出現。

范例:查詢出emp表中 職位和薪資 與雇員 'SCOTT'的 職位和薪資 相同的雇員信息。

SELECT * FROM EMP WHERE (JOB,SAL)=(SELECT job,sal from emp where ename='SCOTT');


3.子查詢返回 多行單列 數據

如果現在的子查詢返回的是多行單列數據的話,這個時候就需要使用三種判斷符判斷了:IN、ANY、ALL;

IN 操作符

IN里面的范圍由子查詢指定。

案例:查詢雇員的工資等于在經理的工資的范圍內的雇員信息

SELECT * FROM EMP WHERE SAL IN (SELECT SAL FROM EMP WHERE JOB='MANAGER');

但是在使用IN的時候還要注意 NOT IN的問題,如果使用NOT IN操作,在子查詢之中,如果有一個內容是null,則不會查詢出任何的結果。

解決非空 問題,使用空判斷NVL。

SELECT * FROM EMP WHERE SAL IN (SELECT NVl(SAL,0) FROM EMP WHERE JOB='MANAGER');

ANY操作符:與每一個內容想匹配,有三種匹配形式

=ANY:功能與IN操作符是完全一樣的;

案例:查詢雇員的工資等于在經理的工資的范圍內的雇員信息

SELECT * FROM EMP WHERE SAL =ANY(SELECT NVl(SAL,0) FROM EMP WHERE JOB='MANAGER');

>ANY:比子查詢中返回記錄最小的還要大的數據;

案例:查詢雇員的工資比經理的工資高的雇員信息

SELECT * FROM EMP WHERE SAL >ANY(SELECT NVl(SAL,0) FROM EMP WHERE JOB='MANAGER');

案例:查詢雇員的工資比經理的工資低的雇員信息

SELECT * FROM EMP WHERE SAL

ALL操作符:與每一個內容相匹配,有兩種匹配形式:

需要注意的是:ALL 。(如果有一個內容是null,則不會查詢出任何的結果。)

>ALL:比子查詢中返回的最大的記錄還要大

案例:查詢雇員的工資比經理的任意一個工資高的雇員信息

SELECT * FROM EMP WHERE SAL >ALL(SELECT NVl(SAL,0) FROM EMP WHERE JOB='MANAGER');

案例:查詢雇員的工資比經理的任意一個工資低的雇員信息

SELECT * FROM EMP WHERE SAL


子查詢在 FROM 中出現

這個子查詢一般返回的是多行多列的數據,當作一張臨時表的方式來處理。

范例:查詢出每個部門的編號、名稱、位置、部門人數、平均工資

SELECT

d.DEPTNO 編號,

d.DNAME 名稱,

d.LOC 位置,

temp.c 部門人數,

temp.a 平均工資

FROM DEPT d, (SELECT

DEPTNO dno,

count(SAL) c,

avg(SAL) a

FROM EMP

GROUP BY DEPTNO) temp

WHERE d.DEPTNO = temp.dno;


子查詢在 HAVING 中出現(一般在條件判斷出現統計函數的時候才使用)

范例:查詢出職位的名稱、人數、平均薪資,且要求 職位平均薪資高于公司平均薪資的,查詢結果根據平均薪資降序排列。

SELECT

JOB 名稱,

count(ENAME) 人數,

avg(SAL) 平均薪資

FROM EMP

GROUP BY JOB

HAVING avg(SAL) > (SELECT avg(sal)

FROM EMP)

ORDER BY 平均薪資 DESC;

本文地址:http://www.mudan321.com/dba/kecheng/24034176362.html 轉載請注明!


PostgreSQL入門到精通 100+ 個學習資料

Oracle培訓機構

金牌講師<>

冉乃綱-老師CUUG金牌講師
冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細了解老師]

免費咨詢上課流程 客服在線中

陳衛星-老師CUUG金牌講師
陳老師 CUUG金牌講師 精通Oracle管理、備份恢復、性能優化 11年Ora...[詳細了解老師]

免費咨詢上課流程 客服在線中

選學校如何選擇適合自己的學校

CUUG -CHINA UNIX USER GROUP,是國際UNIX組織UNIFORUM的中國代表,是國內悠久的專業UNIX培訓機構,被譽為中國UNIX 的搖籃。多年來,以提高教學質量為本,強調素質教育,積極引進、消化國外的新技術,有效的結合中國....[詳情]

一站式服務(從入學到就業一幫到底)

入學

學習

就業

實操

食宿
地址:北京市海淀區田村山南路35號院17號樓
課程咨詢: 400-0909-964
企業服務:137 1818 8639(陳經理)
部分信息來源于網絡,如有錯誤請聯系指正!
版權所有@北京神腦資訊技術有限公司 (CUUG,中國UNIX用戶協會) Copyright 2016 ALL Rights Reserved 京ICP備11008061號-1