`

原创:oracle 子查询介绍 <七>

阅读更多
   前几节课中我们渐渐的对oracle的知识,有了进一步的了解与掌握,随着时间的推移,在这节课程中我们来讲解SQL子查询的知识,希望通过授课中的内容对你有所帮助!
子查询概念 :当一个查询的结果是另一个查询的条件时,称之为子查询。
使用子查询注意事项:
         子查询可以嵌套多层
         子查询需要圆括号()括起来
子查询语法:
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
 …..
 
SQL> select * from emp where exists(select * from dept where deptno=80);
 
EMPNO ENAME  JOB        MGR HIREDATE       SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------


以上内容版权归redarmy_chen所有,如需转载请附带出处,如有疑问请发送邮件至redarmy_chen@qq.com
分享到:
评论

相关推荐

    Oracle SQL Handler(Oracle 开发工具) v5.1.zip

    Oracle SQL Handler,是专为Oracle数据库开发人员及操作人员精心打造的一款Oracle开发工具(客户端工具)。国产原创,精品奉献,无序列号限制,仅凭使用满意度随意赞助就可永久使用!   Oracle SQL Handler 特点...

    asp.net知识库

    Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的一些基础知识 在组件之间实现事务和异步提交事务(NET2.0) 其它 在.NET访问MySql数据库时的几点经验! 自动代码生成器 关于能...

    ThinkPHP 3.1.2 - PHP的开发框架MVC - 含Core,Extend,Example

    查询、统计查询、定位查询、多表查询、子查询、动态查询和原生查询,让你的 数据查询简洁高效。 动态模型:无需创建任何对应的模型类,轻松完成CURD操作,支持多种模型之间 的动态切换,让你领略数据操作的无比畅快...

    vc++ 开发实例源码包

    template&lt;class T&gt; class IDocHostUIHandlerDispatchImpl; // IDispatch template&lt;class T&gt; class DWebBrowserEvent2Impl; // ATL::CDialogImplBaseT template&lt;class T,class TBase&gt; class CDHtmlDialogImpl; ...

    vc++ 应用源码包_1

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

    vc++ 应用源码包_2

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

    vc++ 应用源码包_6

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

    vc++ 应用源码包_5

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

    vc++ 应用源码包_3

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

Global site tag (gtag.js) - Google Analytics