子查询
子查询概念 :当一个查询的结果是另一个查询的条件时,称之为子查询。
使用子查询注意事项:
子查询可以嵌套多层
子查询需要圆括号()括起来
子查询语法:
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
子查询 (内查询) 在主查询之前一次执行完成。
子查询的结果被主查询使用 (外查询)。
举例:查询员工的工资大于JONES的员工信息
分析过程如下:
首先:查询JONES的员工工资是多少 :结果2975
SQL> select sal from emp where ename='JONES';
实际上我们要查询的是:薪资大于2975的员工的信息写法如下:
SQL> select * from emp where sal>2975;
//综合以上写出子查询的结果如下:
SQL> select * from emp where sal>(select sal from emp where ename='JONES');
注意:
子查询要包含在括号内。
将子查询放在比较条件的右侧。
根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询,
注意:
单行操作符对应单行子查询,多行操作符对应多行子查询。
单行操作符
>、>=、 <、 <= 、<>、=
举例:
//查询编号7876相同职位的员工信息 并且薪资大于编号为7521的薪资的员工信息
SQL> select * from emp where job=( select job from emp where empno=7876) and sal>( select sal from emp where empno=7521);
//子查询含有组函数
SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);
//子查询含有having子句 查询部门的最小工资大于20号部门最小工资的部门号及最小工资数
SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20);
备注:子查询可以返回空行 没要查询到结果是可以的。
多行子查询
返回多行。
使用多行比较操作符。
操作符如下图:
操作符 描述
In 等于列表中的任何一个
Any 子查询返回的任意一个值比较 相同还有some
All 和子查询返回的所有值比较
Exists
//查询薪水小于工作岗位CLERK的任何一个薪资的员工信息 并且不包含工作岗位为CLERK的员工信息
SQL> select * from emp where sal < any (select sal from emp where job='CLERK') and job<>'CLERK';
//all与所有值比较 >all 代表的是大于查询结果的最大值
SQL> select * from emp where sal > all (select sal from emp where job='CLERK') and job<>'CLERK';
//查询岗位与部门编号为10相同的员工信息 不包含自己。
SQL> select * from emp where job in(select job from emp where deptno=10) and deptno<>10;
只做思考?
SQL> select * from emp where exists(select * from dept);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
3 rows selected
SQL> select * from emp where exists(select * from dept where deptno=80);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
分享到:
相关推荐
Oracle入门体会Oracle入门体会Oracle入门体Oracle入门体会会
Oracle_基本知识介绍 Oracle入门(精华) Oracle入门(精华)
Oracle9.0入门 从实践中学习oracle sql oracle数据库基础
ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程
Oracle入门,英文版 Oracle入门,英文版
《Oracle 入门心得》PDF高清电子书 入门心得
教程名称:“Oracle入门很简单”视频教程与源文件(全22集)课程目录:【】Oracle入门很简单-源文件【】Oracle入门很简单【】Oracle入门很简单01-05集【】Oracle入门很简单06-10集【】Oracle入门很简单11-15集【】...
oracle入门
Oracle入门与精通,属于文档,PPT类型,的,主要目的在于Oracle的学习
ORACLE入门心得
Oracle从入门到精通.pdf 很经典的一本书,很适合Oracle学习的初学者; 资源与大家共享啊!
4 Oracle9.0入门_04_SQL 5 Oracle9.0入门_05_集成管理环境 6 Oracle9.0入门_06_DBA的日常维护 7 Oracle9.0入门_07_常用数据方案对象 8 Oracle9.0入门_08_安全管理:用户授权 9 Oracle9.0入门_09_PLSQL 10 Oracle9.0...
《Oracle入门很简单》的教材PPT 本书带课件。 浅显易懂,零门槛Oracle学习,真的很简单 亲切自然,老鸟带领菜鸟,快速掌握Oracle数据库 15.5小时多媒体语音视频讲解(视频在优酷上有!)
Oracle入门很简单[张朝明].part2.共2部分,这是第2部分。 本书从初学者的角度出发,由浅入深、循序渐进地介绍了oracle数据库开发的基础知识。书中对数据库基本理论及其在数据库开发过程中的应用也有详细介绍。书中也...
Oracle 入门文档 Oracle笔记 一、oracle的安装、sqlplus的使用 Oracle笔记 二、常用dba命令行 Oracle笔记 三、function 、select Oracle笔记 四、增删改、事务 Oracle笔记 五、创建表、约束、视图、索引、序列、...
Oracle入门的详细必备教程,手把手交,私聊还有视频!!!
《Oracle从入门到精通》PDF版本下载
30分钟就让你oracle入门PPT,基础训练~~~~~~~~
经证明,最适合: Oracle入门,第一步:Oracle Concepts
oracle 入门知识 解压密码忘了 oracle 入门知识 解压密码忘了