不同数据库中,分页的实现原理是不同的。

目录

MySQL分页:

Oracle分页:

SQL Server 2000:(SQL server 2000及以前的旧版)

SQL Server 2012+:


MySQL分页:

limit关键字:第一个参数,起始的行号;第二个参数,从起始行号算起向后取多少条数据;

在前面SQL【select * from table】执行完了之后,就可以使用【limit 10,20】对这个区间中的数据进行截取了;


Oracle分页:

Oracle是目前商用数据库中主流数据库。

Oracle实现分页查询比较麻烦:需要三层嵌套

(1)第一层(黄色框内):表示核心的查询语句;对于不同的业务,这里面的SQL语句不同;

(2)第二层(绿色框内):使用了伪列(无需声明,可以直接使用的隐藏列。。。这些伪列应该是Oracle自己定义的啦);第二层就是通过rownum这个伪列,筛选出前20行的数据;;;并且把rownum伪列给起一个别名row_num;

(3)第三层(蓝色框内):第二层已经获得了前二十条数据了。。。。。但是如果我们想获取是如第12条到第20条数据,就需要增加第三层嵌套了。 第三层嵌套就是获取11行以后的数据。

这样以后,上面的SQL语句就是获取12条到20条的数据。

但是使用PageHelper后,可以大大减少分页的编码量。


SQL Server 2000:(SQL server 2000及以前的旧版)

(1)使用了子查询的方式来实现分页;

(2)top子句是最后执行的,,,比如上面的top 3,是在查询出结果后,再从中取前三条结果。


SQL Server 2012+:

(1)offset是偏移的意思:offset 4 rows,偏移4行:起始行号从第5行开始;

(2)fetch next 5:代表向后取5条数据;