MySQL实战6 分页查询和联合查询
2019-04-20 本文已影响32人
香沙小熊
1.分页查询
数据记录条数过多的时候,需要分页查询
语法:
SELECT 查询字段
FROM 表名
WHERE .... 等等前面学过的所有语法
limit offset(开始记录索引,是从0开始的),size(要取出的条数);
案例:查询前5条员工数据
SELECT *FROM employees LIMIT 0,5;
注意:如果从第一条开始,这个0可以省略:SELECT * FROM employees LIMIT 5;
案例:查询第11条到第25条
SELECT *FROM employees LIMIT 10,15;
案例:查询有奖金且工资最高的前10名的员工信息
SELECT * FROM employees WHERE commission_pct IS NOT NULL
ORDER BY salary DESC LIMIT 10;
分页查询的特点:
1.limit 语句是位置上要放在比order by 语句的还后面,
其次中sql执行过程中,limit也是最后去执行的语句。
2.通用的分页查询写法(page:总页数,size:每页显示的记录条数)
SELECT 查询列表
FROM 表名
LIMIT (page-1)*size,size;
size=10
page 和 size 记录范围 和 起始记录索引值 limit
1 10 1-10条 0 0,10
2 10 11-20条 0 10,10
3 10 21-30条 0 20,10
4 10 31-40条 0 30,10
2.联合查询
关键字union,作用就是将多余查询语句的结果合并成一个结果集;
案例:查询部门编号大于100或名字中含有a字符的员工信息
SELECT *FROM employees WHERE department_id >100 OR last_name LIKE '%a%';
SELECT *FROM employees WHERE department_id >100
UNION
SELECT *FROM employees WHERE last_name LIKE '%a%';
案例:查询学校所有男老师和男学生的信息
SELECT tno 编号 ,tname 名字,tsex 性别 ,tbirthday 出生日期 FROM teachers WHERE tsex='男'
UNION
SELECT sno,sname,ssex,sbirthday FROM students WHERE ssex='男';
联合查询的特点:
- 联合查询的两个子查询的查询列表要一致
- 要求联合查询的子查询的查询列表顺序要在内容上保持一致
- 使用'union'联合默认会自动去重,如果不想去重可以将'union'改为'union all'