MySQL学习笔记连接子分页联合查询以及sql语句执行顺序总结

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL学习笔记连接子分页联合查询以及sql语句执行顺序总结相关的知识,希望对你有一定的参考价值。

一、连接查询

1、SQL92语法:

  • 等值连接

select 查询列表
from 表1 别名,表2 别名
where 表1.key=表2.key

  • 特点:

    • 表的顺序可以调换
    • 等值连接的结果是多表交集部分
    • 一般我们都会给表取别名(不强制,只是为了方便)
    • n个表连接至少要n-1个连接条件
  • 非等值连接

select 查询列表
from 表1 别名,表2 别名
where 非等值的连接条件

  • 自连接(自己和自己连接)

select 查询列表
from 表 别名1,表 别名2
where 等值的连接条件

2、SQL99语法

  • 内连接(可以分为:等值连接、非等值连接和自连接)

    select 查询列表
    from 表1 别名
    [inner] join 表2 别名 on 连接条件

  • 外连接

    select 查询列表
    from 表1 别名
    left | right | full [outer] join 表2 别名 on 连接条件

    • 特点:
      • 左连接中左边的就是主表,右连接中右边的是主表,mysql不支持全外连接
      • 查询的结果会显示主表中所有的行,包括为空值的行
  • 交叉连接(会产生笛卡尔积)

    select 查询列表
    from 表1 别名
    cross join 表2 别名;

二、子查询

1、概念

嵌套在其他语句内部的select语句称为子查询或内查询;
外面如果有select语句,则称此语句为外查询或主查询。

2、分类

  • 按结果集的行列

    • 标量子查询(单行子查询):结果集为一行一列
    • 列子查询(多行子查询):结果集为多行一列
    • 行子查询:结果集为多行多列
    • 表子查询:结果集为多行多列
  • 按出现位置

    • select后面:
      仅仅支持标量子查询
    • from后面:
      表子查询
    • where或having后面:
      标量子查询
      列子查询
      行子查询
    • exists后面:
      标量子查询
      列子查询
      行子查询
      表子查询

三、分页查询

select 查询列表
from 表
limit [offset,] size;

注意:
offset:起始的条目索引,默认从0开始
size:显示的条目数

四、联合查询

1、语法

查询语句1
union [all]
查询语句2
union [all]

2、要求

  • 每条查询语句的查询列数必须一致
  • 每条查询语句的查询的各列类型、顺序最好一致(不是必须,但是最好一致)
  • union 会自动去除重复项,union all会包含重复项

五、总结(sql语句执行顺序)

select 查询列表 --------------------------⑦

from 表1 别名 -----------------------------①

连接类型 join 表2 ------------------------②

on 连接条件 -------------------------------③

where 筛选 --------------------------------④

group by 分组列表 ----------------------⑤

having 筛选 -------------------------------⑥

order by排序列表 ------------------------⑧

limit 起始条目索引,条目数; ----------⑨

以上是关于MySQL学习笔记连接子分页联合查询以及sql语句执行顺序总结的主要内容,如果未能解决你的问题,请参考以下文章

08-mysql基础-mysql中的DQL-联合查询

06MySQL分页查询子查询经典案例联合查询

access中left join和limit联合分页查询怎么写sql语句?

联合查询sql注入

mysql 多表联合查询语句怎么写

mysql 三表联合查询