美文网首页
mysql第五天-子查询、分页查询、联合查询

mysql第五天-子查询、分页查询、联合查询

作者: 幸福的小哥哥 | 来源:发表于2020-03-22 11:24 被阅读0次

子查询

子查询介绍

  • 含义:出现在其他语句(增删改查语句)中的select语句,称为子查询或内查询,外部的查询语句,称为主查询或者外查询


    图示
  • 子查询分类(以查询语句为例)


    分类

where后面的子查询

image.png

子查询都是优先于主查询先去执行,因为主查询用到了子查询的结果。

where后面的标量子查询

案例:标量子查询
支持多个标量子查询

where后面的列子查询(又称多行子查询)

image.png
案例:
image.png

where后面的行子查询(了解查询)

image.png

select后面的子查询(只支持标量子查询)

了解即可,可用别的查询方式替换

from后面的子查询使用(表子查询)

image.png

exists后面的子查询使用(又叫相关子查询,用的也不多)

  • 语法:select exists(子查询语句);
  • 结果只有2个:1或者0;
    根据子查询的结果就行判断是1还是0,子查询的结果有值就是1,为空则值为0.


    image.png
    image.png

分页查询

语法 案例1
案例2

联合查询

  • union 联合 合并:将多条查询语句的结果合并成一个结果
  • 语法:
    查询语句1
    union
    查询语句2
    union
    ...
  • 应用场景:
    要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时
  • 特点:★
    1、要求多条查询语句的查询列数是一致的!
    2、要求多条查询语句的查询的每一列的类型和顺序最好一致,查询字段名称不一致的时候,返回的字段名称为前面的一条sql为标准,但内容却是各自查询的东西。
    3、union关键字默认去重,如果使用union all 可以包含重复项
    4、union的子句中,不用写order by,合并后的结果集可以进行order by,子句order by没有意义。

引入的案例:查询部门编号>90或邮箱包含a的员工信息

  • SELECT * FROM employees WHERE email LIKE '%a%' OR department_id>90;
  • SELECT * FROM employees WHERE email LIKE '%a%'
    UNION
    SELECT * FROM employees WHERE department_id>90;

相关文章

网友评论

      本文标题:mysql第五天-子查询、分页查询、联合查询

      本文链接:https://www.haomeiwen.com/subject/qmrlyhtx.html