• SQL基础 -DQL 数据查询语言(下)


    一、子查询

    1.含义:出现在其他语句内部的select语句,称为子查询或内查询。内部嵌套其他select语句的查询,称为外查询或主查询。

    select 字段1 
    from 表 
    where 字段2 in (
    select 字段2 from 表
    where 字段3);
    

    2.分类

    按子查询出现的位置:

    select后面:仅支持标量子查询
    from后面:支持表子查询
    where或having后面:标量子查询、列子查询、行子查询
    exists后面(相关子查询):表子查询
    

    按结果集的行列数不同:

    标量子查询(结果集只有一行一列)
    列子查询(结果集只有一列多行)
    行子查询(结果集只有一行多列)
    表子查询(结果集一般为多行多列)

    3.where或having后面

    特点:

    ①子查询放在小括号内
    ②子查询一般放在条件的右侧
    ③标量子查询,一般搭配着单行操作符使用。> < >= <= = <>
    ④列子查询,一般搭配着多行操作符的使用 in、any/some、all
    ⑤子查询的执行优先于主查询的执行。

    3.1 标量子查询

    select 字段
    form 表
    where 字段条件(
        select 字段
        from 表
        where 条件
    );
    

    例如:

    3.2 列子查询(多行子查询)

    select 【distinct】字段
    from 表
    where 字段 多行操作符(
        select 【distinct】 字段
        from 表
        where 字段条件
    );
    

    4.select后面

    标量子查询

    select 表1.字段,(
        select 字段
        from 表2
        where 表1.字段 = 表2.字段
    )
    from 表1
    

    4.from 后面

    将子查询结果充当一张表,要求必须起别名

    select 别名1.字段1,别名2.字段2
    from(
        select 字段【函数】 别名3,字段
        from 表1
        【group by 字段】
    ) 别名1
    inner join 字段3
    on 别名1.别名3 【between 字段4 and 字段5】;
    

    5.exists 后面

    语法:

    select exists(完整的查询语句);
    

    结果:0或者1

    二、分页查询

    应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求

    语法:

    select 查询列表
    from 表
    【join type join 表2 
    on 连接条件
    where 筛选条件
    group by 分组字段
    having 分组后的筛选
    order by 排序的字段】
    limit offset,size;
    

    offset 要显示条目的起始索引(起始索引从0开始)

    size 要显示的条目个数

    特点:limit语句放在查询语句的最后,执行也在最后

    公式:limit (page-1)*size,size;

    三、联合查询

    union 联合 合并:将多条查询语句的结果合并成一个结果

    语法:
    查询语句1
    union
    查询语句2
    union
    ...
    

    特点:

    1.要求多条查询语句的查询列数是一致的!
    2.要求多条查询语句的查询的每一列的类型和顺序最好一致
    3.union关键字默认去重,如果使用 union all 可以包含重复项。

    应用场景:要查询的结果来自与多个表,且多个表没有直接的连接关系,但查询的信息一致时

    案例:

  • 相关阅读:
    “数学题”——传钱
    kafka笔记——入门介绍
    SpringBoot集成Dubbo+Zookeeper
    MySql基本语法
    动态规划
    总结
    Java反射
    软件清单
    Java IO操作
    Spring Boot AOP的使用
  • 原文地址:https://www.cnblogs.com/nnadd/p/12551450.html
Copyright © 2020-2023  润新知