Mysql 分页 vs Oracle 分页|非常详细,建议收藏
👨🎓作者:bug 菌
✏️博客:CSDN、掘金、infoQ、51CTO 等
🎉简介:CSDN 博客专家,C 站历届博客之星 Top50,掘金/InfoQ/51CTO 等社区优质创作者,全网粉丝合计 10w+,对一切技术感兴趣,重心偏 Java 方向;硬核公众号「 猿圈奇妙屋」,欢迎小伙伴们的加入,一起秃头,一起变强。
..
✍️温馨提醒:本文字数:1999 字, 阅读完需:约 9 分钟
如果小伙伴们在批阅文章的过程中觉得文章对自己有帮助,请别吝啬手中的赞呀,大胆的把文章点亮👍,相信你点赞了好的文章,平台也会经常给你推荐高质量好文,您的点赞三连(收藏+关注+留言)就是对 bug 菌写文道路上最好的鼓励与支持😘。时光不弃🏃🏻♀️,创作不停💕,加油☘️
一、前言🔥
环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE
我们都知道,关系型数据库常用的有 mysql、oracle、sql server 等,说起他们之间的细微差别,还是非常多的,但是今天我不是来给大家一一列举它们之间有何差别,而是...
想必,对于大家接触颇深的还是分页;就拿 oracle 与 mysql 而言,它们之间也是有很大的区别。
今天我就来给大家讲解一下,对于分页而言它们究竟有何不同,日后难免自己也会用得上。
二、正文🔥
如下,我先来给大家分别演示一下,mysql 与 oracle 两数据库是如何进行 sql 分页的,具有很好的参考价值,希望能帮到大家。
1️⃣mysql 分页语句
分页格式如下:
通常页面传参是 page 与 limit,比如{page=2,limit=10},表述页面想获取第 2 页的数据,其实换算成 sql 分页参数,其实就遵循这个计算公式就行。
其中:startRow = ( page - 1) * limit 表示起始值,size=limit 表示页容量。
编辑其实很好理解,比如要查询第 2 页,一页 10 条的数据,那就应该返回序号为(10,20]的数据。
sql 写法==> select * from tableName limit 10,10;
startRow = (2-1)*10,size=10 ;表示 limit 从 10 行开始,取 10 条,即第 2 页数据。
我再给大家模拟一下,具体如下:我们先来看下【grade】表中共有多少数据?直接 select * 执行一下。
很好,我们发现【grade】表中共有 5 条数据。那我们就依该表进行分页演示;
如果我们要查第 2 页,其分页容量为 size=2 的数据集,那理应是拿到 id=3 和 id=4 的这两条数据,我们来通过 sql 来验证一下。具体执行 sql 如下:
大家请看执行结果:
发现没有,查询结果集与预期是一样的;证明说的分页参数计算是对的,大家可以放心学习参考。
如上只是针对 mysql 数据库进行的一种分页方法,其实不知一种,还有别的分页方式,我就不一一赘述啦。感兴趣的小伙伴可以自行去了解。
2️⃣oracle 分页语句
分页语句格式如下:
其中 pageStart、pageEnd 参数,与 mysql 分页参数的计算方式不太一样,其中遵循 mysql 分页参数来处理,则 oracle 中的分页参数计算方法应为:
其实你就可以理解成 oracle 要的分页是具体到范围,比如获取数据序列为[11,20]的数据,示例演示如下 :
假设分页容量为 10(pageSize=10),假设我要获取获取第 2 页的数据,我又该怎么写这个 sql?重点是要知道如何计算 rownum 的值范围!依葫芦画瓢呀,大家请看:
其中:
pageStart = (2-1)*10+1 = 11
pageEnd = 2*10 = 20
注意一点:rownum 总是从 1 开始的,而不是从 0,这点跟 mysql 不一样。
3️⃣总结
Mysql 使用 limit 分页,而 Oracle 使用 rownum 分页。
Oracle 进行分页查询时,需要设置别名,然后查询完成之后再通过调用别名进行大于的判断。
Mysql 进行分页查询,limit 两参数 startRow = (startPage-1)*pageSize,limit = pageSize;而 oracle 进行分页查询时,pageStart = (startPage-1)*pageSize + 1,pageEnd = startPage * pageSize;
Oracle 查询索引从 1 开始,而 Mysql 索引是从 0 开始。
Mysql 分页查询表述从第 startRow 条数据开始查找,一共查找 limit 条数据。而 Oracle 则表示从第 pageStart 条数据查询,查找到第 pageEnd 下标处数据截止。
... ...
文末🔥
我是 bug 菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!
感谢认真读完我博客的铁子萌,在这里呢送给大家一句话,不管你是在职还是在读,绝对终身受用。
时刻警醒自己:
抱怨没有用,一切靠自己;
想要过更好的生活,那就要逼着自己变的更强,生活加油!!!
版权声明: 本文为 InfoQ 作者【bug菌】的原创文章。
原文链接:【http://xie.infoq.cn/article/1839f7e9338a70281052d1a6b】。文章转载请联系作者。
评论