Oracle数据库-子查询介绍

        子查询是嵌入到另一个SELECT语句当中的SELECT语句。通过子查询,可以使用简单的语句组成强大的语句。当需要从表中选择行,而选择条件却取决于该表自身的数据时,子查询非常有用

        子查询主要分为以下两种基本类型,单行子查询,多行自查询。另外,还有3种类型,多列子查询,关联子查询,嵌套子查询。

1,单行子查询
      内部SELECT语句给外部的SELECT语句返回0行或1行。可以在SELECT语句后面的WHERE、HAVING、FROM后面放置单行子查询。
         1-1,在where子句中使用子查询
                 将另一个查询作为where子句的子查询
                 在单行子查询中还可以使用其他比较运算符,比如<>  >  <  >=  <=
                 如:查询工资比平均工资高的员工信息
                                   
         1-2,在having子句中使用子查询​​​​​​​
                  HAVING是在分组统计后用于过滤行,同样在HAVING子句后面可以跟子查询。
                 如:统计平均工资高于公司平均工资的部门
                 
         1-3,在from子句中的子查询
                 将子查询放在from子句后为其提供数据 
                 使用单行子查询时有时会出现一些错误:
                 如: 如果子查询返回的结果是多行,而其使用的是比较运算符,将会出现错误

     使用子查询时还需注意:子查询中不能使用ORDER BY子句进行排序。

2,多行子查询
                
内部SELECT语句给外部的SELECT语句返回1行或多行
                在父查询中,可以使用IN、 ANY、 WHERE操作
                Select * from emp
                Where deptno in (select deptno from dept);
                同样也可以使用NOT IN检查一个值是否不在指定的列表中
                例: 使用 ANY 查询任意满足工资低于平均档的员工信息
                Select empno, ename sal from emp
                Where sal < any(select avg(sal) from emp group by deptno);

3,多列子查询
         
      子查询还可以包含多列
                如:查询出每个部门的最低工资,再查出满足这些条件的员工信息

4,关联子查询
                子查询引用与父查询相关的一列或多列,子查询需要借助父查询,而父查询也要借助子查询,子查询要为父查询的每一行运行一次。
                如:要查出每个部门中,高出部门平均工资的员工编号和姓名
                首先:查出每个部门的平均工资

                 代替解法:

5,嵌套子查询
                SQL提供嵌套子查询机制,即:在一个查询中嵌套另一个SELECT...FROM...HWERE查询语句,子查询中嵌套子查询,最多可嵌套255层
                如:查询工资高于 'SMITH' 工资的员工信息

6,在UPDATE语句中使用子查询
                如:将empno为7900的员工工资更新为工资等级表中的最高平均工资。

7,在DELETE语句中使用子查询
               
列:删除工资高于平均工资的员工

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值