MySQL子查询介绍\分页查询\联合查询
子查询介绍
I、含义:出现在其他语句中的select‘语句,成为子查询或内查询,外部的查询语句成为著查询或外查询。
II、分类:(一)、按子查询出现的位置:一、select后面:仅仅支持标量子查询
二、from后面支持表子查询:将子查询的结果充当一张表,要求必须起别名
三、where或having后面:
1、标量子查询(单行子查询)
特点:i、子查询放在小括号内
ii、子查询一般放在条件右侧
iii、标量子查询:一般搭配单行操作符使用
单行操作符(条件运算符):>,<,<=,>=,<>
列子查询:一般搭配多行操作符使用
多行操作符:in,any,some,all
iv、子查询的执行优先于主查询执行,主查询的条件用到了子查询的结果(即先执行子查询,后执行主查询)
2、列子查询(多行子查询)
3、行子查询(结果集为一行多列或多行多列
四、exists后面(相关子查询):表子查询(较少使用)
语法:exists(完整的查询语句)
结果:1或0
(二)、按结果集的行列数不同:标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
行子查询(结果集只有一行多列)
表子查询(结果集一般为多行多列或一行多列)
分页查询
应用场景:当前显示的数据,一页显示不全,需要分页提交sql请求
语法:select 查询列表 from 表 【join type join 表2 on 连接条件 where 筛选条件 group by 分组字段 order by 排序字段】limit 【offset,】size;
offset:要显示条目的起始索引,起始索引从0开始
size:要显示的条目个数
特点:1、limit语句放在查询语句的最后(语法和执行)
2、公式:要显示的页数page,每页的条目数size
select 查询列表 from 表 limit (page-1)*size,size;
例:size=10
page:1 0
2 10
3 20
·······
联合查询
一、应用场景:要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时用union
二、union(联合、合并):将多条查询语句的结果合并成一个结果
三、语法:查询语句1 union 查询语句2 union ······
四、特点:1、要求多条查询语句的查询列表数一致
2、要求多条查询语句的查询的每一列的类型和顺序最好一致
3、union关键字默认去重,如果使用union all可以包括重复项