菜鸟笔记
提升您的技术认知

mysql 分页-ag真人游戏

1.背景

  • 查询返回的记录太多了,我们希望一页一页的查看,如: 百度,淘宝的页面

  • 表里有多条数据,但是我们只想查询其中的某几条数据

2.实现规则

  • 分页原理

所谓分页,就是将数据库中的结果集,一段一段显示出需要的条件

  • mysql中使用limit实现分页

  • 使用格式:

    limit [位置偏移量],行数 
    • 第一个"位置偏移量"参数指明mysql以哪一行开始显示,是一个可选参数.如果不指定"位置偏移量",就会默认从表中的第一条记录开始(第一条记录的位置偏移量为0,第二条记录的位置偏移量为0,以此类推)显示;第二个参数"行数",指明返回的记录条数.

    • 结构"limit 0,条目数" 等价于"limit 条目数"

  • 举例:

    • 需求1: 每页显示20条记录,此时显示第一页

    select employee_id,last_name
    from employees
    limit 0,20;
    • 需求2: 每页显示20条记录,此时显示第二页

    select employee_id,last_name
    from employees
    limit 20,20;
    • #我们可以看出,每页显示pagesize条记录,此时显示pageno页.

    公式为: (当前页数-1)*每页条数,每页条数

    limit (pageno-1)*pagesize,pagesize;

    即比如我们在淘宝中点击跳转到第几页,后台就会将数据发给后台程序,后台程序在经过分析后交给sql执行,提供给用户相应的信息

  • where order by limit 声明顺序

    select employee_id,last_name
    from employees
    where salary > 6000
    order by salary desc
    limit 0,10;

    即limit子句必须写在整个select语句的最后面!

    • #练习: 有107条数据,只要显示第32,33行

      ```sql

      limit 31,2; ```

    注意: mysql8.0的新特性可以使用"limit 3 offset 4"语法,意思是获取从第5条记录开始后面3条记录,和"limit 4,3"返回的结果相同,即前面参数为条数,后面参数为从第几个开始

    select employee_id,last_name
    from employees
    limit 31 offset 2;
  • 使用limit 的好处

    约束返回结果的数量可以减少数据表的网络传输量,也可以提升查询效率,如果我们只需要知道的返回结果只有1条,就可以使用limit 1,告诉select语句只需要返回1条记录即可.这样的好处就是不需要扫描完整的表,只需要检索到一符合条件的记录即可返回 如: 查询最高工资

select employee_id,last_name,salary
from employees
order by salary desc
limit 1;

3.拓展

  • 分页在不同dbms中使用的关键字可能不同.在mysql,postgresql,mariadb和sqlite中使用limit关键字,且需放在select语句的最后面

  • 如果是sql server 和 access中,则需使用top关键字 如:

    select top 5 name,hp_max
    from heros
    order by hp_max desc;
  • 如果是在db2 中,则需要使用 fetch first 5 rows only

    如:

    select name,hp_max
    from heros
    order by hp_max desc
    fetch first 5 rows only;
  • oracle 中,需要使用rownum来统计行数

    select rownum,last_name,salary  #每个表中都隐藏着一个rownum字段
    from employees
    where rownum < 5
    order by salary desc;

    这条语句是先取出前五条数据行,然后再按照hp_max从高到低顺序进行排序,但产生的结果与前面的方法不同

网站地图