首页 > 数据库技术 > 详细

Oracle 学习笔记(七)

时间:2019-05-05 23:14:07      阅读:156      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

子查询

概念:指嵌入在其他 sql 语句中的 select 语句,也叫做嵌套查询。 

 

单行子查询 

指只返回一行数据的子查询语句

查询 SMITH 同部门的所有员工 

1、查询出 SMITH 的部门号 

select deptno from emp WHERE ename = ‘SMITH‘; 

2 、查询 SMITH 同部门的所有员工  

SELECT * FROM emp WHERE deptno = (select deptno from emp WHERE ename = ‘SMITH‘); 

(执行 sql 是从左到右扫描,如果有括号,括号里面的先被优先执行)

 

多行子查询

指返回多行数据的子查询语句

查询和部门 10 的工作相同的雇员的名字、岗位、工资和部门号 

1、去重查询部门为 10 的工作

SELECT DISTINCT job FROM emp WHERE deptno = 10; 

2、查询和部门 10 的工作相同的雇员的名字、岗位、工资和部门号

SELECT * FROM emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno = 10); 

(不能用 job = **,因为等号是一对一的) 

 

在多行子查询中使用 all 操作符

查询工资比部门 30 的所有员工的工资高的员工的姓名、工资和部门号

SELECT ename, sal, deptno FROM emp WHERE sal > all (SELECT sal FROM emp WHERE deptno = 30); 

还可以用函数 MAX 查询 

SELECT ename, sal, deptno FROM emp WHERE sal > (SELECT MAX(sal) FROM emp WHERE deptno = 30); (执行效率上, 函数高得多) 

 

在多行子查询中使用 ANY 操作符

查询工资比部门 30 的任意一个员工的工资高的员工姓名、工资和部门号

SELECT ename, sal, deptno FROM emp WHERE sal > ANY (SELECT sal FROM emp WHERE deptno = 30); 

 

今天笔记做到这,后续有空继续。

 

 技术分享图片 

Oracle 学习笔记(七)

原文:https://www.cnblogs.com/stephen-java/p/10816713.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!