`
阅读更多


子查询概念 :当一个查询的结果是另一个查询的条件时,称之为子查询。

使用子查询注意事项:

         子查询可以嵌套多层

         子查询需要圆括号()括起来

子查询语法:

SELECT     select_list

FROM       table

WHERE    expr operator

                           (SELECT    select_list

                         FROM                  table);

l  子查询 (内查询) 在主查询之前一次执行完成。

l  子查询的结果被主查询使用 (外查询)。

举例:查询员工的工资大于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');

注意:

l  子查询要包含在括号内。

l  将子查询放在比较条件的右侧。

根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询,

   注意:

l  单行操作符对应单行子查询,多行操作符对应多行子查询。

单行操作符

>、>=、 <、 <= 、<>、=

举例:

//查询编号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);



备注:子查询可以返回空行 没要查询到结果是可以的。



多行子查询

l   返回多行。

l  使用多行比较操作符。

操作符如下图:

操作符

描述

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;
  • 大小: 44.2 KB
分享到:
评论

相关推荐

    Oracle 子查询

    ### Oracle 子查询详解 #### 引言 在数据库查询语言SQL中,子查询是一种强大的功能,它允许在一个查询语句内部嵌套另一个查询语句。这种能力极大地扩展了SQL的表达力,使得复杂的业务逻辑可以通过简洁的SQL语句来...

    oracle 子查询

    ### Oracle 子查询详解 #### 一、子查询概述 在Oracle数据库中,子查询(也称为嵌套查询)是一种非常强大的SQL特性,它允许在一条SQL语句中嵌入另一条查询语句。子查询可以用来解决各种复杂的数据检索问题,特别是...

    oracle中的子查询

    ### Oracle中的子查询详解 #### 一、子查询概述与应用场景 子查询是SQL语言中一项非常重要的功能,它允许我们在一个查询语句中嵌入另一个查询语句,以此来解决复杂的查询问题。子查询可以极大地提高SQL语言的灵活...

    Oracle表分区详解

    除了以上基本类型,Oracle还提供了一些高级分区策略,如子分区、全局分区和本地分区等,以适应不同业务需求。 表分区的优点包括: 1. **性能提升**:查询只涉及相关分区,减少I/O操作,提高查询速度。 2. **维护...

    Oracle 笔记 详解 资料 用例

    笔记中详细讲解了SQL的SELECT语句,包括如何选择字段、如何进行条件过滤、如何排序和分组数据,以及更复杂的联接操作和子查询。此外,还有关于DML语句(INSERT、UPDATE、DELETE)和DDL语句(CREATE、ALTER、DROP)的...

    SQL之分组统计和子查询专题

    李兴华老师的ORACLE数据库课程中,对分组统计和子查询进行了深入详解。本课程涵盖了分组统计的重点和难点、子查询的概念和应用场景,以及在实际开发中需要注意的细节。 分组统计 在SQL中,分组统计是对数据进行...

    Oracle中的分析函数详解

    其中,Oracle的分析函数是其强大的特性之一,它允许用户在单个SQL查询中执行复杂的分析操作,而无需使用子查询或者自连接。这篇文档将深入探讨Oracle中的分析函数,帮助你更好地理解和利用这一功能。 一、什么是...

    ORACLE索引详解及SQL优化

    3. **减少子查询**:合并子查询为单个查询,或者使用连接(JOIN)来减少查询复杂度。 4. **选择合适的数据类型**:使用最小的数据类型可以降低存储需求,提高查询效率。 5. **避免在索引列上进行计算**:索引不会...

    Oracle树查询总结

    Oracle 数据库在处理树形数据结构时,提供了一种强大的查询方法,即 `SELECT...START WITH...CONNECT BY...PRIOR` 语法。这种查询模式允许我们以递归方式遍历和检索具有层级关系的数据,例如组织结构、产品分类或者...

    oracle分页查询

    Oracle 分页查询详解 Oracle 分页查询是指从大型数据表中提取指定范围的记录,以便提高查询效率和减少数据传输量。常用的 Oracle 分页查询方法有三种:使用 ROWNUM、使用 ROW_NUMBER() 和使用子查询。 第一种方法...

    Oracle分页详解

    1. **ROWNUM 的限制**:在Oracle中,`ROWNUM`只能在查询的最外层使用,因此需要使用子查询进行嵌套。 2. **性能考虑**:对于大数据量的表,分页查询可能会消耗较多资源。可以通过建立索引等方式优化查询性能。 3. **...

    oracle认证详解Oracle的几种分页查询语句

    在Oracle中,实现分页查询有两种常见方法:第一种方法是利用`ROWNUM`伪列结合子查询;第二种方法则是使用`FETCH FIRST`子句(在Oracle 12c及以上版本中可用)。本文将重点介绍第一种方法,并详细解析其背后的原理与...

    ORACLE 物化视图 详解

    ### ORACLE 物化视图详解 #### 一、物化视图概述 在Oracle数据库中,物化视图(Materialized View)是一种特殊的数据库对象,它存储的是一个查询的结果集,可以理解为一个预计算的快照。物化视图主要用于提高报表...

    Oracle数据库用法详解

    子查询建表允许在创建表的同时插入数据,如: ```sql CREATE TABLE NewTable AS SELECT * FROM OldTable; ``` 修改表结构,可以通过`ALTER TABLE`命令来增加、修改或删除列,重命名表,或者修改列定义。删除表的命令...

    oracle手册,详解SQL用法

    在Oracle中,`SELECT`语句是用于从数据库中检索数据的主要手段,它可以结合各种条件、连接、子查询等构建复杂的查询逻辑。 总结来说,Oracle SQL的用法涵盖了广泛的函数、数据类型转换、空值处理、条件判断以及聚合...

    oracle中exists_和in的效率问题详解

    这是因为 Oracle 在执行 IN 子查询时,首先执行子查询,并将获得的结果列表存放在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。EXISTS 则...

    Oracle数据库Sql语句详解大全

    第六章 子查询 第七章 数据建模及数据库设计 了解系统开发的步骤 数据关系的定义 理解实体关系映射图(E-R图) 第八章 创建表 掌握创建表的语法 Oracle的数据类型 使用约束 第九章 对数据的操作 在已创建表中插入...

    oracle简明查询语句!!

    本文将根据提供的材料,深入探讨Oracle查询语句中的一个重要概念——子查询。 #### 二、为什么引入子查询 子查询是一种非常强大的功能,它允许我们在主查询中嵌套另一个查询。通过这种方式,我们可以解决一些复杂的...

    oracle分页查询并返回总记录数据存储过程

    1. **ROWNUM 的限制**:ROWNUM 仅在查询结果的第一行进行计算,因此需要先使用子查询为每一行添加行号。 2. **性能优化**:在实际应用中,如果查询涉及复杂的连接或过滤条件,考虑使用索引来优化查询性能。 3. **...

    oracle常用查询

    4. **子查询**:子查询是在主查询内部的嵌套查询,可以用于获取满足特定条件的子集数据,或作为比较值。 5. **分组与排序**:GROUP BY用于按一个或多个列对结果进行分组,HAVING则用于过滤分组后的结果。ORDER BY则...

Global site tag (gtag.js) - Google Analytics