MySql(十五)分页查询

分页查询

应用场景:当要显示的数据,一页显示不全,此时需要分页提交sql请求

实现:

语法:

SELECT 查询列表

FROM 表

[join type] JOIN 表2

ON 连接条件

WHERE 筛选条件

GROUP BY 分组条件

HAVING 分组后筛选条件

ORDER BY 排序字段

LIMIT offset,size;

注:offset:要显示条目的起始索引(其实索引从0开始)

​ size:要显示的条目个数

案例1:显示前五条员工信息

SELECT * FROM employees
LIMIT 0,5;
/**当起始索引为0时可以省略**/
SELECT * FROM employees
LIMIT 5;

案例2:查询第11条到第25条的数据

分析:起始索引:10

​ 要显示的条目行数:25-11+1 = 15

SELECT * FROM employees
LIMIT 10,15;

案例3:查询有奖金的员工信息,并且显示工资较高的前10名

  1. 查询有奖金的员工信息并按照工资高低排序
  2. 显示前10名的数据
SELECT * 
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary DESC
limit 0,10;

分页查询的特点:

  1. limit语句放在查询语句的最后

  2. 公式:
    要显示的页数:page;
    每页的条目数:size

    SELECT 查询列表

    FROM 表

    LIMIT (page-1)*size,size;

注:这里假设每页的条目数为10

page(要显示的页数)offset(要显示的起始索引)
10
210
320
n(n-1)*10

进阶练习

已知表stuinfo和表grade的结构如下:

stuinfo

学号(id)姓名(name)邮箱(email)年级编号(gradeId)性别(sex)年龄(age)
John@126.com

grade

年级编号(id)年级名称(gradeName)

案例1.查询所有学员的邮箱的用户名(注:邮箱前面的@字符)

分析:

  1. 获取学员的邮箱名
  2. 获取字符@的索引
  3. 截取字符@
SELECT SUBSTR(email,1,INSTR(email,'@')-1) 用户名
FROM stuinfo;

注:

subStr(“要截取的字符”,起始索引,结束索引);//返回截取指定索引的字符串

inStr(“整个字符串”,“要查寻索引的字符”);//返回指定字符的索引

案例2:查询男生和女生的个数

SELECT COUNT(*) 个数,sex
FROM stuinfo
GROUP BY sex;

案例3:查询年龄>18岁所有学生的姓名和年级名称

分析:用到了两张表

SELECT name,gradeName
FROM stuinfo s
INNER JOIN grade g
ON s.gradeid = g.id
WHERE age > 18;

案例4:查询哪个年级的学生最小年龄大于20岁

分析:

  1. 查询每个年级的学生的最小年龄
  2. 筛选出最小年龄大于20岁的年级有哪些
SELECT MIN(age) 最小年龄,gradeId
FROM stuinfo s
GROUP BY gradeId
HAVING 最小年龄 > 20;

总结:查询语句中涉及到的关键字及其执行顺序

SELECT 查询列表		   /**7**/
FROM 表1				 /**1:锁定数据源**/
连接类型 JOIN 表2	  /**2:将两个表进行连接:笛卡尔乘积**/
ON 连接条件			  /**3.连接条件**/
WHERE 筛选条件		  /**4**/
GROUP BY 分组列表	  /**5**/
HAVING 分组后的筛选	/**6**/
ORDER BY 排序列表	  /**8:将查询的结果进行排序**/
LIMIT 起始索引,条目数 /**9:将结果分页显示**/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值