码迷,mamicode.com
首页 > 数据库 > 详细

Oracle-子查询实例

时间:2019-02-05 19:35:44      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:结构   单行   现在   col   用法   将不   应用   形式   dep   

子查询的应用范围:

WHERE: 一般返回单行单列,单行多列,多行单列

HAVING:子查询如果出现在HAVING中,只有一种情况就是子查询返回单行单列数据,且需要进行统计函数计算

FROM:返回多行多列(表结构)

SELECT:返回单行单列,较少使用

 

范例1:查询低于公司平均工资的雇员信息

1. 先计算出平均工资:
SELECT AVG(sal)
FROM emp

2. 上面的查询结果返回单行单列数据,可以用WHERE语句子查询

SELECT * 
FROM emp
WHERE sal < (SELECT AVG(sal) FROM emp);

范例2:查询出公司最早雇佣的雇员信息

1. 查询出最早的雇佣日期:
SELECT MIN(hiredate) FROM emp

2. 返回单行单列数据,可用于WHERE子句

SELECT *
FROM emp
WHERE hiredate = (SELECT MIN(hiredate) FROM emp);

范例3:与 SCOTT 从事同一工作,且工资相同的雇员信息

1. 查询出SCOTT的工作和工资
SELECT job, sal FROM emp WHERE ename = SCOTT

2.返回单行多列,可以用WHERE子句

SELECT * 
FROM emp
WHERE (job, sal) = (SELECT job, sal FROM emp WHERE ename = SCOTT) AND ename <> SCOTT;

子查询如果返回多行多列的数据(表的形式),这类判断一般有三个操作符(IN, ANY, ALL)

 

IN的用法:指的是与子查询返回的内容相同

注:子查询中不能返回 null,将不会有任何的查询结果出现

SELECT * 
FROM emp
WHERE sal IN (SELECT sal FROM emp WHERE job = MANAGER);

=ANY操作:功能等于 IN

SELECT * 
FROM emp
WHERE sal =ANY (SELECT sal FROM emp WHERE job = MANAGER);

>ANY操作:大于子查询结果的最小值

SELECT * 
FROM emp
WHERE sal >ANY (SELECT sal FROM emp WHERE job = MANAGER);

<ANY操作:小于子查询结果的最大值

SELECT * 
FROM emp
WHERE sal <ANY (SELECT sal FROM emp WHERE job = MANAGER);

ALL操作之 >ALL:大于子查询结果的最大值

ALL操作之 <ALL:大于子查询结果的最小值

 

子查询之HAVING:

范例1:查询高于平均工资的职位名称,职位人数,平均工资

1.写子查询语句,即确定平均工资
SELECT AVG(sal) FROM emp

2.要使用统计函数,所以只能在HAVING语句使用子查询

SELECT job, count(empno), avg(sal)
FROM emp
GROUP BY job HAVGING
SELECT AVG(sal) FROM emp;

子查询之FROM:

范例1:查询出每个部门名称,位置,部门人数

1. 确定要使用的数据表: emp, dept
2. 查询部门编号,名称,位置只需要dept表
SELECT deptno, dname, loc FROM dept;
3. 查询部门编号,人数,只需要emp表
SELECT deptno, count(empno) FROM emp GROUP BY deptno;
4.返回的数据可以在deptno这个字段上找到联系

SELECT d.dname, d.loc, temp.count
FROM dept d, temp (SELECT deptno, count(empno) count FROM emp GROUP BY deptno) temp
WHERE d.deptno = temp.deptno(+);

 

Oracle-子查询实例

标签:结构   单行   现在   col   用法   将不   应用   形式   dep   

原文地址:https://www.cnblogs.com/dododo70/p/10352936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!