vlambda博客
学习文章列表

07-mysql基础-mysql中的DQL-分页查询

点击蓝色“潭时录”关注我丫

每天和小潭一起快乐的学习~

    你好,我是在学mysql的小潭。在上一期的推文中我们学习了mysql的子查询知识,本期我们将继续学习DQL中的分页查询。


分页查询介绍

应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求
语法:[执行顺序:from -> join -> on -> where -> group by -> having -> select -> order by -> limit] select 查询列表 from [join type join 表2 on 连接条件 where 筛选条件 group by 分组字段 having 分组后的筛选 order by 排序的字段] limit [offset,] size; offset:要显示条目的起始索引(起始索引从0开始)size:要显示的条目个数
特点:1.limit语句放在查询语句的最后2.公式: 要显示的页数 page,每页的条目数size select 查询列表 from limit (page-1)*size, size;

案例:

#案例1:查询前5条员工信息SELECT * FROM employees LIMIT 0,5; #如果从第一条开始,则参数0可以省略,写为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.查询出最低的平均工资的部门编号 2.查询部门信息=1的结果*/SELECT d.*FROM departments dWHERE d.`department_id` = ( SELECT department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) LIMIT 1);
#查询平均工资最低的部门信息和该部门的平均工资/*思路:1.查出平均工资最低的部门号和平均工资 2.查询1中部门编号的部门信息*/SELECT d.*,agFROM departments dJOIN( SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) LIMIT 1) ag_depON d.`department_id`=ag_dep.department_id;
#查询平均工资最高的job信息/*思路:1.查询平均工资最高的job_id 2.查询job信息=1的结果*/SELECT *FROM jobsWHERE job_id = ( SELECT job_id FROM employees GROUP BY job_id ORDER BY AVG(salary) DESC LIMIT 1);
#查询平均工资高于公司平均工资的部门有哪些/*思路:1.查询平均工资 2.查询每个部门的平均工资 3.筛选2的结果集,满足平均工资>1的结果*/SELECT AVG(salary),department_idFROM employees GROUP BY department_idHAVING AVG(salary) >( SELECT AVG(salary) FROM employees);
#各个部门中,最高工资中最低的那个部门的最低工资是多少/*思路:1.查询各部门的最高工资中最低的部门编号 2.查询1的结果集中部门的最低工资*/SELECT MIN(salary)FROM employeesWHERE department_id =( SELECT department_id FROM employees GROUP BY department_id ORDER BY MAX(salary) LIMIT 1);
#查询平均工资最高的部门的manager的详细信息,last_name,department_id,email,salary/*思路:1.查询平均工资最高的部门编号 2.将employees和departments连接查询,筛选条件=1的结果*/SELECT last_name,d.department_id,email,salaryFROM employees eINNER JOIN departments dON d.`manager_id` = e.`employee_id`WHERE d.`department_id` = ( SELECT department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) DESC LIMIT 1);
#其他练习补充(仅了解)#查询所有员工的邮箱的用户名(邮箱中@前的字符)SELECT SUBSTR(email,1,INSTR(email,'@')-1) 用户名 FROM employees;
#其他练习补充(仅了解)#查询每个专业的男生人数和女生人数分别是多少#方法一:SELECT COUNT(*) 个数,sex,majoridFROM studentGROUP BY sex,majorid;#方法二:SELECT majorid,(SELECT COUNT(*) FROM student WHERE sex='男' AND majorid=s.majorid) 男,(SELECT COUNT(*) FROM student WHERE sex='女' AND majorid=s.majorid) 女FROM student sGROUP BY majorid;




下期预告:mysql中的查询5




如果你喜欢本文,
请长按二维码,关注 潭时录 .
转发至朋友圈,是对我最大的支持。

点个 在看 
喜欢是一种感觉
在看是一种支持
↘↘↘