前几节课中我们渐渐的对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
分享到:
相关推荐
6. **子查询**:嵌套在其他SQL语句中的查询,用于提供临时的结果集。例如,`SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees)` 会找出工资高于员工平均工资的员工。 在压缩包中的`emp....
Oracle支持丰富的SQL语法,包括SELECT语句的子查询、联接、聚合函数、排序、分组等,提供了强大且灵活的数据查询能力。 9. **Oracle事务** 事务是数据库操作的基本单位,确保数据的一致性和完整性。BEGIN、COMMIT...
### Oracle ERP EBS 库存模块INV-8个表字段解释 #### 表名:`inv.mtl_system_items` 此表作为Oracle ERP EBS系统中库存管理的核心表,记录了组织内部所有物料的信息。理解其字段意义对于进行物料管理、成本控制及...
Oracle SQL Handler,是专为Oracle数据库开发人员及操作人员精心打造的一款Oracle开发工具(客户端工具)。国产原创,精品奉献,无序列号限制,仅凭使用满意度随意赞助就可永久使用! Oracle SQL Handler 特点...
Oracle使用ROWNUM伪列来实现分页,通常结合子查询或WITH ROWNUMBER功能。但Oracle没有直接的OFFSET,所以需要一些技巧,如: ```sql SELECT * FROM ( SELECT t.*, ROWNUM rn FROM (SELECT * FROM your_table) ...
根据提供的文件内容,以下是关于Oracle数据库分区、优化及使用技巧的详细知识点: 一、Oracle分区技术概述 Oracle数据库分区是一种数据分割技术,它允许将一个大表或索引划分为更小、更易管理的部分。分区的基本...
在本篇作业中,我们将深入探讨Oracle数据库系统管理和维护的相关知识,主要涵盖SQL语句的编写、表的创建与约束、用户及权限管理、索引与视图的创建以及数据库安全策略的设计。以下是对每个任务的详细解释: 1. 创建...
4. **数据库连接管理**:项目会涉及数据库操作,如MySQL或Oracle,使用JDBC(Java Database Connectivity)进行连接。数据库连接配置通常在配置文件中,如`db.properties`,导入后需要根据自己的数据库信息进行修改...
11. 子查询:在查询语句中嵌套另一个查询,用于比较、筛选或组合结果。 12. 连接(JOIN):将两个或更多表的数据合并在一起,有INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)和FULL JOIN(全...
- **技术可行性**:现代数据库管理系统(如MySQL, Oracle, SQL Server等)提供了强大的数据处理能力和丰富的开发工具,使得构建这样的系统成为可能。 - **高效、准确可行性**:通过合理的设计和优化,数据库可以...
描述中的提示暗示了这份资料是为学生提供帮助的,强调了下载后应自行删除,可能涉及到版权或原创性问题。 在电子商务网站的设计与实现中,涉及的知识点广泛且深入,涵盖了以下几个主要部分: 1. **电子商务基础...
在这个过程中,学生将选择一款开发工具,例如VC、VB、C#、ASP.Net、Java、Delphi等,以及一个数据库系统,如SQL Server、Oracle、DB2、Sybase等,来创建一个具体的应用程序。以“图书管理系统”为例,设计任务可能...
- 现有的数据库系统如Oracle8i提供了一定程度上对XML文档查询的支持,但存在手动模式转换、不支持半结构化查询等局限。 - 本文提出的系统能够自动转换模式,并支持XML的半结构化查询,扩展了传统关系数据库在处理...
查询、统计查询、定位查询、多表查询、子查询、动态查询和原生查询,让你的 数据查询简洁高效。 动态模型:无需创建任何对应的模型类,轻松完成CURD操作,支持多种模型之间 的动态切换,让你领略数据操作的无比畅快...
template<class T> class IDocHostUIHandlerDispatchImpl; // IDispatch template<class T> class DWebBrowserEvent2Impl; // ATL::CDialogImplBaseT template<class T,class TBase> class CDHtmlDialogImpl; ...
MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...
MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...
MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...
MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...
MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...