Mysql学习笔记(6):分页查询、联合查询

本文介绍了MySQL中的分页查询与联合查询。分页查询通过`LIMIT`子句实现,适用于大量数据的分批展示,例如示例中展示了如何获取指定范围的员工信息。联合查询则用于合并多个独立查询的结果,要求各查询语句返回相同数量的列,如案例中展示了结合不同条件查询员工信息的方法。联合查询的`UNION`关键字会自动去除重复行,而`UNION ALL`则保留所有记录。

1 分页查询

1.1 应用场景

当要显示的数据,一页显示不全,需要分页提交sql请求

1.2 语法

select 查询列表
from 表
【join type join 表2
on 连接条件
where 筛选条件
group by 分组字段
having 分组后的筛选
order by 排序的字段】
limit 【offset,】size;

注意:offset要显示条目的起始索引(起始索引从0开始)
size 要显示的条目个数

1.3 使用

#案例1:查询前五条员工信息
SELECT * FROM employees LIMIT 0,5;
SELECT * FROM employees LIMIT 5;

#案例2:查询第11条——第25条
SELECT * FROM employees LIMIT 10,15; 

#案例3:有奖金的员工信息,并且工资较高的前10名显示出来
SELECT * 
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary DESC
LIMIT 10;

1.4 特点

①limit语句放在查询语句的最后
②公式
要显示的页数 page,每页的条目数size

select 查询列表
from 表
limit (page-1)*size,size;

2 联合查询

将多条查询语句的结果合并成一个结果

2.1 应用场景

要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时

2.2 语法

查询语句1
union
查询语句2
union

2.3 使用

#引入的案例:查询部门编号>90或邮箱包含a的员工信息

SELECT * FROM employees WHERE email LIKE '%a%' OR department_id>90;;

SELECT * FROM employees  WHERE email LIKE '%a%'
UNION
SELECT * FROM employees  WHERE department_id>90;


#案例:查询中国用户中男性的信息以及外国用户中年男性的用户信息

SELECT id,cname FROM t_ca WHERE csex='男'
UNION ALL
SELECT t_id,tname FROM t_ua WHERE tGender='male';

2.4 特点

①要求多条查询语句的查询列数是一致的!
②要求多条查询语句的查询的每一列的类型和顺序最好一致
③union关键字默认去重,如果使用union all 可以包含重复项

参考资料:
《尚硅谷MySQL数据库教程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值