8. 分页查询
应用场景:
当要显示的数据,一页显示不全,需要分步提交sql请求。
语法:
select 查询列表 ⑦
from 表1 ①
[ join_type join 表2 ②
on 连接条件 ③
where 筛选条件 ④
group by 分组字段 ⑤
having 分组后筛选 ⑥
order by 排序字段 ] ⑧
limit [offset], size; ⑨
offset: 要显示的条目起始索引(索引是从0开始的)
size: 要显示的条目个数
语句后面的小圈包起来的数字,就是这条sql语句执行的顺序
特点:
-
limit语句放在查询语句的最后面,执行也是最后
-
公式:要显示的页数page,每页的条目数size
select * from employees limit (page - 1)*size,size;
案例一:有奖金的员工信息,并且工资较高的前十名显示出来
select *
from employees
where commission_pct IS NOT NULL
order by salary desc
limit 10; # 只写一个数,代表是10条数据,默认索引从0开始
9. 联合查询
union 联合 合并:将多条查询语句的结果合并成一个结果
语法:
查询语句1
union
查询语句2
union
…
查询语句n;
引入案例:查询部门编号大于90或邮箱包含a的员工信息
select *
from employees
where department_id > 90 or email like "%a%";
# 上边是使用之前的方法 下边是union
select * from employees where department_id > 90
union
select * from employees where email like "%a%";
应用场景:
要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时(列数一样,两个表查询到的两个结果,是竖着连接组合成一个表的)
特点:
- 要求多条查询语句的查询列数是一致的
- 要求多条查询语句的查询的每一列的类型和顺序最好是一致
- union关键字默认去重(两个表进行联合时,会将两个表中都有的数据,只留下一条),如果使用union all关键字可以包含重复项
少年易老学难成,一寸光阴不可轻