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后面:
三、分页查询
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语句执行顺序总结的主要内容,如果未能解决你的问题,请参考以下文章