子查询
1.含义
嵌套在其他语句内部的select语句称为子查询
外面的语句也可以是insert update delete select等,一般select作为外面语句较多
外面如果是select语句,则可以称为外查询或者主查询
2.分类
(1)按出现位置
select后面
只支持标量子查询
from后面
主要是表子查询
注意:将子查询结果充当一张表,要求必须起别名
where后面或having后面
特点:
①子查询放在小括号内
②子查询一般放在条件的右侧
③标量子查询,一般搭配着单行操作符使用
> < >= <= = <>
④列子查询,一般搭配着多行操作符使用
in/not in any/some all
⑤子查询的执行优于主查询执行,主查询的条件用到了子查询的结果
支持类型:
标量子查询
列子查询
行子查询
exists后面(相关子查询)
语法:
exists(完整的查询语句) 结果:1或0
支持类型:
标量子查询
列子查询
行子查询
表子查询
(2)按结果集的行列
标量子查询(单行子查询):结果为一行一列
列子查询(多行子查询):结果集为多行一列
行子查询:结果集为多行多列
表子查询:结果集为多行多列
分页查询
1.应用场景
当要查询的条目太多,一页显示不全
2.语法
select 查询列表 ①
from 表1 ②
【join type join 表2 ③
on 连接条件 ④
where 筛选条件 ⑤
group by 分组字段 ⑥
having 分组后的筛选 ⑦
order by 排序后的字段】⑧
limit 【offset,】size; ⑨
语句执行顺序:②→③→④→⑤→⑥→⑦→①→⑧→⑨
注意:
offset代表的是起始的条目索引,默认从0卡死
size代表的是显示的条目数
limit 字句不论是语法还是执行顺序上都放在最后
公式:
假如要显示的页数为page,每一页条目数为size
select 查询列表
from 表
limit (page-1)*size,size;
联合查询
含义: 将多条查询语句的结果合并成一个结果
语法:
查询语句1
union
查询语句2
union
…
应用场景:
要查询的结果来自多个表,且多个表没有直接的连接关系,但查询信息一致时
特点:
①要求多个查询语句的查询列表是一致的
②要求多条查询语句的查询的每一列的类型和顺序最好一致
③union关键字默认去重,如果使用union all 可以包含重复项