zoukankan      html  css  js  c++  java
  • 使用SQL语言实现相关子查询和嵌套子查询

    在SQL中,子查询分为两种:相关子查询和嵌套子查询

    今天和大家讲解一个小知识,下面举一个例子:

    如图所示,在一个表中有多个列,编号(BookId)图书名(BookName)出版社(CB)价格(MN)

    先在数据库中插入一个Book表,

    1 use 数据库名称
    2 go
    3 create table Book
    4 (
    5     BookId int not null,
    6     BookName nvarchar(20) not null,
    7     CB nvarchar(20) not null,
    8     MN money not null
    9 )

    再在表中插入几条数据

    1 insert  Book(BookId,BookName,CB,MN)
    2  select 2,'c#高级应用','圣通出版',23.00 union
    3  select 2,'Jsp开发应用','机械出版社',45.00 union
    4  select 3,'高等数学','济南出版社',25.00 union
    5  select 3,'疯狂英语','清华大学出版社',32.00

    -------------------------------------------------------------------------------------------------------

    下面进入正题

    嵌套子查询:

    嵌套子查询的执行部依赖于外部的查询.

    执行过程:

    1.执行子查询,其结果不被显示,而是传递给外部查询,作为外部查询的条件使用.

    2.执行外部查询,并显示整个结果.

    嵌套子查询一般分为:返回单值的子查询和返回一个列表的子查询,下面举例说明:

    返回单值:

    --查询所有价格高于平均价格的图书名,作者,出版社和价格。

    USE tempdb 
     GO    
    SElECT  BookName,作者,CB,MN  FROM Books  
    WHERE MN >  (    
    SELECT AVG(MN)    FROM Books  
    )  
    GO

    -------------------------------------------------------------------------------------------------------

    返回值列表:

    --查询所有借阅图书的读者信息 

    SElECT *  FROM Readers  
    WHERE 读者编号 IN  (  
      SELECT 读者编号    FROM [Borrow History] 
     )
      GO

    相关子查询:

    相关子查询的执行依赖于外部查询.多数情况下都是子查询的WHERE语句中引用了外部查询的表.

    执行过程:

    1.从外层查询中取出一个元组,讲元组相关的列的值传给内层查询

    2.执行内层查询,得到子查询的值

    3.外查询根据子查询返回的结果或结果集得到满足条件的行

    4.然后外层查询取出下一个元组重复做以上3条步骤,知道外层的元组全部处理完毕

    下面举例说明:

    一、查询Booka表中大于该类图书价格平均值的图书信息

    1 select BookName,CB,BookId,MN
    2   from Book as a  where MN > 
    3  (
    4     select AVG(MN)    FROM Books AS b    
    5     where a.BookId=b.BookId  
    6 )

    在讲个一个就结束了,18岁以下的请自觉关闭页面-.-

    SQL语言的执行顺序:

    五slelect

    一、from

    二、where

    三、group by

    四、having

    六、order by

  • 相关阅读:
    springboot配置jsp
    idea项目启动问题
    源码中的设计模式-模板方法模式
    Kafka Eagle CentOS6安装
    源码中的设计模式-静态代理模式
    MySQL主从复制小记
    源码中的设计模式-观察者模式
    源码中的设计模式-单例模式
    Superset
    Hive随记
  • 原文地址:https://www.cnblogs.com/csdwan/p/SQL.html
Copyright © 2011-2022 走看看