数据查询之子查询和嵌套查询

                                                               数据查询之子查询和嵌套查询

第一部分定义

       子查询:子查询是select语句中另外一条select语句。常常被称为内查询。

        嵌套查询:一个外层查询中包含有另一个内层查询,即一个sql查询语句块可以嵌套在另一个查询块的where中。其中外层查询称为父查询,主查询。内层查询可也称为子查询。

第二部分简单概述

       子查询的select查询总是使用圆括号括起来。

       子查询中不使用order by子句,order by子句只能对结果进行排序

        select,insert,update或delete中允许是一个表达式的地方都可以使用子查询

        如果某个表出现在子查询中而不出现外部查询中,该表中的列无法输出。

第三部分语法格式

        where 查询表达式 [NOT] IN (子查询)

        where 查询表达式 比较运算符 [any/all] (子查询)

        where [not] exists (子查询)

第四部分具体应用

        1单值比较查询。把表达式的值与子查询产生的值进行比较,作为搜索条件的一部分呈现在where子句中,经常用到=,<>。且结果为单一值。举例:查询与110相同年龄的学生。

select *

from student

where age = (select age from student

                    where  学号 = '110')

        2带in的嵌套查询。当子查询产生一系列值时,适合使用带IN的嵌套查询。举例:在students和grade表中查询参加考试的同学信息。

select *

from student

where 学号 in (select 学号 from grade)

         注:当嵌套子查询中存null值时,避免使用not in

         3带some的嵌套查询。some是把每一行指定的列值与查询的结果进行比较,返回满足条件的值,。例如:查询年龄小于平均年龄的所有学生信息。

          select *

          from student

          where 年龄<some

          (select avg(年龄)from student)

          4any与some完全等价。

         5带all的嵌套查询。多值比较。将列值与子查询结果进行查询,要求所有列的查询结果都为真,否则就不返回该行。例如找出年龄最小的学生

          Select * From Student Where sage < all (

          Select sage From Student )
         6带exists的嵌套查询。exists搜索条件并不真正地使用子查询的结果,它仅仅测试是否产生任何结果。例如:在student和grade中,查询参加考试的同学信息。
         select *
         from student
         where exists
         (select 学号 from grade where student.学号 = grade.学号)
          
 
       这篇博客是个人学习后的一篇笔记,如果有什么不足之处恳请各位斧正。
           
      

 

   

        

                    

          

        

 

 

 

 

   

        

        

      

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值