APP下载

常见关系数据库实现分页

2020-04-21奚科芳

数字技术与应用 2020年1期

奚科芳

摘要:在应用程序的开发中经常要用到各类关系数据库,本文主要阐述了目前流行的关系数据库ORACLE数据库、My SQL数据库、SQL Server数据库常用实现分页的方法。

关键词:ORACLE;My SQL;SQL Server;实现分页

中图分类号:TP311.13 文献标识码:A 文章编号:1007-9416(2020)01-0044-02

0 引言

不管在PC Web开发还是在移动Web开发中几乎都要用到数据库,为了方便美观的展示数据,使用分页是必不可少的一项技术。本文主要讲述了当前常用关系数据库ORACLE数据库、My SQL数据库、SQL Server数据库实现分页方法。

目前普通使用的关系数据库有ORACLE,My SQL,SQL Server,这三种数据库在实现分页时其分页查询语句又有差别,但在应用程序调用时,给出的参数基本都是相同的。已知当前页号和每页显示记录数,那需要考虑起始记录数和结束记录数与页码与每页显示的记录之间关系。各参数关系分析如下:

pageSize    -- 用来表示每页要显示的记录数,可提前给定

currentPage    -- 用来表示当前页的变量,可提前给定

start       -- 用来表示从那一条记录开始显示,需计算

end         -- 用来表示那一条记录结束显示,需计算

start=(currentPage-1)*pageSize -- 开始显示的查询记录条数计算公式

end=currentPage*pageSize -- 结束显示的查询记录条数计算公式

存在关系模式emp(empno,ename,job,hiredate,sal,comm,deptno),其表示员工表中包括的字段有:员工编号、员工姓名、岗位、入职日期、月薪、奖金、部门编号。其表信息见表1。

1 Oracle数据库实现分页

1.1 思路

ROWNUM是一个伪例,可以返回结果集的顺序号,在SQL查询语句中用它可以控制查询的起始记录条数和终止条数,在应用程序开发过程中只需将起始条数和终止条数作为专门的分页sql语句传入即可查询出想要的结果。以查询显示员工表中第“start”条到“end”条记录为例。

1.2 相关sql格式

以上SQL查询语句存在错误,因为ROWNUM只能执行<、<=运算,不能执行>、>=或一个区间运算Between…and等。另ROWNUM和ORDER BY一起使用时,因为ROWNUM在记录输出时生成,而ORDER BY子句在最后执行,所以当两者在一起使用时,其ROWNUM实际是已经被排了序的ROWRUM。

1.4 常用通用sql分页格式

2.1 思路

“Top记录数”表示可以显示前多少记录数的信息。先取前currentPage页记录,然后倒序,取倒序后前pageSize条记录,这样就能得到分页所需要的数据,不过顺序反了,之后可以将再倒序回来,也可以不再排序了,直接交给前端排序。

2.2 常用通用sql分页格式

3.1 思路

MySQL有个专门针对查询出一段数据的语句limit,使用起来非常的方便。

上面查询中LIMIT  start,pagesize代表从第start条(不包含第2条)数据开始查询出pagesize条记录。

3.2 通用sql分页格式

4 结语

每种数据库都有它自己的优点及局限性,适用于不同的要求范围,每种数据库实现分页的方法有多种,本文重点讲述了三种数据库最通用、效率相对高的分页方法,Oracle数据库利用ROWNUM伪列来实现分页,SQL Server數据库利用TOP来实现分页,My SQL数据库利用LIMIT来直接实现分页,其中分页实现起来最简单的是My SQL数据库。

参考文献

[1] 孙风栋,闫海珍.Oracle 10g数据库海量数据分页查询优化[J].计算机应用与软件,2011(9):137-139.

[2] 张辉,赵郁亮,徐江,等.基于Oracle数据库海量数据的查询优化研究[J].计算机技术与发展,2012(2):165-167.

[3] 徐越人.Oracle Rownum的使用与JSP页显示的实现[J].计算机与现代化,2007(10):86-90.

[4] 齐心.Oracle数据库分页技术的应用[J].智库时代,2019(14):221+226.