首先,MySQL支持limit关键字,这个关键字可以让MySQL只返回我们指定的一段记录,比如:

select * from usermsgbox limit 3

这条SQL语句就可以让MySQL返回usermsgbox表中的前三条记录,也可以这样:

select * from usermsgbox limit 1,3

这个意思是这样的:返回usermsgbox表中第二条记录开始往后的三条,也就是2,3,4这三条记录。这里要千万小心了:(1)limit的第一个参数是从哪条记录开始,注意,这里第一条记录在limit中编号是0,所以上述例子中limit从1开始,其实是从第二条记录开始;(2)第二个参数3指的是共取3条记录出来,不是取第1-3条记录,千万记住了。

有了这个工具,实现分页就方便多了,不过在查看了MySQL的手册后,发现MySQL在limit的基础上提供了更方便的关键字:

CODE: SELECT ALL
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
      -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

这里主要是SQL_CALC_FOUND_ROWS和FOUND_ROWS()这两个东西,第一个是SELECT的一个option,第二个是一个函数。有这两个有什么好处呢?如果不用这个,我们做分页,需要首先把所有记录取出来,然后得到记录总条数,然后再用limit取出我们需要的那些记录,很烦,尤其是第一次查询,需要把所有的结果集都返回到客户端,所以性能很差。为此,MySQL提供了SQL_CALC_FOUND_ROWS这个option,用上这个option之后,第一条SQL中虽然返回的还是limit指定的那些记录,但是不加limit的这条SQL语句一共能取到多少条记录,就被计算出来了。然后在第二条SQL中,我们用FOUND_ROWS()这个函数就可以把这个总记录条数取出来了。这样就避免了我们手动写一个不带limit的SQL语句,性能提升了,我们coding也方便了。记住哦,第一条SQL中,SQL_CALC_FOUND_ROWS计算的是不带limit从句的SQL语句能select到的记录总数哦。

该项功能从MySQL 4开始支持。更详细的看下面的英文原文:

FOUND_ROWS() 
A SELECT statement may include a LIMIT clause to restrict the number of rows the server returns to the client. In some cases, it is desirable to know how many rows the statement would have returned without the LIMIT, but without running the statement again. To get this row count, include a SQL_CALC_FOUND_ROWS option in the SELECT statement, then invoke FOUND_ROWS() afterward:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name 
-> WHERE id > 100 LIMIT 10; 
mysql> SELECT FOUND_ROWS();

The second SELECT will return a number indicating how many rows the first SELECT would have returned had it been written without the LIMIT clause. (If the preceding SELECT statement does not include the SQL_CALC_FOUND_ROWS option, then FOUND_ROWS() may return a different result when LIMIT is used than when it is not.) Note that if you are using SELECT SQL_CALC_FOUND_ROWS, MySQL must calculate how many rows are in the full result set. However, this is faster than running the query again without LIMIT, because the result set need not be sent to the client. SQL_CALC_FOUND_ROWS and FOUND_ROWS() can be useful in situations when you want to restrict the number of rows that a query returns, but also determine the number of rows in the full result set without running the query again. An example is a Web script that presents a paged display containing links to the pages that show other sections of a search result. Using FOUND_ROWS() allows you to determine how many other pages are needed for the rest of the result. The use of SQL_CALC_FOUND_ROWS and FOUND_ROWS() is more complex for UNION queries than for simple SELECT statements, because LIMIT may occur at multiple places in a UNION. It may be applied to individual SELECT statements in the UNION, or global to the UNION result as a whole. The intent of SQL_CALC_FOUND_ROWS for UNION is that it should return the row count that would be returned without a global LIMIT. The conditions for use of SQL_CALC_FOUND_ROWS with UNION are:

1. The SQL_CALC_FOUND_ROWS keyword must appear in the first SELECT of the UNION. 
2. The value of FOUND_ROWS() is exact only if UNION ALL is used. If UNION without ALL is used, duplicate removal occurs and the value of FOUND_ROWS() is only approximate. 
3. If no LIMIT is present in the UNION, SQL_CALC_FOUND_ROWS is ignored and returns the number of rows in the temporary table that is created to process the UNION.

SQL_CALC_FOUND_ROWS and FOUND_ROWS() are available starting at MySQL 4.0.0.

转载于:https://www.cnblogs.com/super119/archive/2011/01/13/1934997.html

JAVA Web开发MySQL数据库记录浏览分页相关推荐

  1. Java web访问MySql数据库分页查询

    有时候我们查询数据库表时,但是很多时候表中的记录很多,需要显示出来的话怎么办?这时可以使用分页的方法,就是指定从数据库表的什么位置开始查询显示,以及指定显示的记录数目. Mysql数据库提供了limi ...

  2. java启动mysq服务_Java Web开发——MySQL数据库的安装与配置

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD ...

  3. 微信开发众筹项目视频教学小程序+java后端开发+mysql数据库

    用HBuilder X开发微信小程序,java后端开发工具idea,mysql数据库,主要功能有:用户管理.分类列表.分类金额.众筹列表.订单列表.系统设置.权限分配 源码下载地址:>>& ...

  4. java web mysql备份,Java Web 实现Mysql 数据库备份与还原

    前段时间某某删库事故付出的惨重代价告诉我们: 数据备份的必要性是企业数据管理极其重要的一项工作. 1. Mysql备份与还原命令 备份命令: mysqldump -h127.0.0.1 -uroot ...

  5. javaweb实现mysql备份功能_java web 实现mysql 数据库备份、恢复

    如题,由于项目需要,研究并实现了java web的 mysql数据库的备份.下载.恢复功能,中间遇到一些问题,耗费了不少时间,下面让我一一道来: 背景介绍: window 7系统 mysql 5.7 ...

  6. jsp旅行社管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

    一.源码特点   JSP 旅行社管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发.开发环境为TOMCAT7.0, ...

  7. jsp网上鞋城系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

    一.源码特点   java 网上鞋城系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发.开发环境为TOMCAT7.0, ...

  8. JSP实习实训管理系统myeclipse开发mysql数据库WEB结构java编程

    一.源码特点   JSP 实习实训管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发. JSP实习实训管理系统my ...

  9. jsp4S店管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

    一.源码特点   JSP 4S店管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发.开发环境为TOMCAT7.0, ...

  10. jsp汽车销售管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

    一.源码特点   jsp汽车销售管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发.开发环境为 TOMCAT7.0 ...

最新文章

  1. js-ES6学习笔记-Iterator和for-of循环
  2. sql 语句中的 NULL值
  3. moment获取几小时前_momentjs – 使用时刻在两个日期时间之间获得hh:mm的时差
  4. 从0开始学Swift笔记整理(一)
  5. 王思聪吃热狗的c语言小程序,王思聪吃热狗火了,开发各种恶搞小程序!王校长:我不要面子的啊...
  6. commons-io实现流的拷贝
  7. React Native 首次加载白屏优化
  8. 问题四十:对ray tracing圆环图形进行debug(2)——C++,用“笛卡尔”方法解一元四次方程
  9. 38译码器数码管c语言代码,51单片机38译码器实现动态数码管控制
  10. 硬盘测试软件测试有问题,用crystaldiskinfo工具检测出来硬盘不良怎么办
  11. Shottr 免费好用的Mac 截屏软件
  12. java string 初始化 null_java基础 题和知识点总结, 关于String s是否默认初始化为null......,new一个对象和类静态域,是不是在内存中不是一个地方...
  13. 秋意浪漫风景如画 诗情画意 谁能读懂一个浪子的心
  14. 看小姐姐用动图展示 10 大 Git 命令
  15. web前端开发是什么?
  16. 深度学习:欠拟合问题的几种解决方案
  17. webm转mp4 python实现
  18. java exchange 日历_Exchange Server EWS 模拟:为与会人员添加日历会议日程(Calendar Item)...
  19. cl.ez6.xyz index.php,[BJDCTF2020]EzPHP-POP链
  20. 人工智能机器学习底层原理剖析,人造神经元,您一定能看懂,通俗解释把AI“黑话”转化为“白话文”

热门文章

  1. 双系统下Mac可以这样卸载windows系统
  2. 文件隐藏工具Funter for Mac使用方法
  3. 阿里巴巴如何基于 Kubernetes 实践 CI/CD
  4. 巧用DOS命令上传文件
  5. MyBatis-3.4.2-源码分析12:XML解析之mapperElement(root.evalNode(mappers))
  6. bio、nio、aio及select、poll、epoll
  7. 替换Mac的home brew源
  8. IDEA 这样配置注释模板,让你高出一个逼格!
  9. 刷屏了!张一鸣6000字内部演讲:不依赖捷径,不轻言All-in(附全文)
  10. 7 种 JVM 垃圾收集器,Java语言实现核心,看完我跪了