oracle分页用哪个关键字,[数据库]Oracle和mysql中的分页总结

* 每次只查询10条记录.当点击下一页的时候,查询数据库,查询后10条.

* 优点:如果数据量非常大,不会导致内存溢出.

* 缺点:每次都与数据库进行交互.

* 分页一般采用数据库的sql语句完成分页查询.

* MYSQL分页:使用limit关键字.

* Oracle分页:使用rownum    SQLServer分页:使用top关键字.

* select * from customer limit a,b;

* 参数a:代表从那条记录开始,初始值是0.

* 参数b:查询长度.

* 分页关系:

page(当前页数)            limit(每页显示条数)           start(从哪开始的)

1                        10                          0

2                        10                          10

3                        10                          20

***** start = (page - 1) * limit;

*向后台传递值:当前页数.

*后台向页面显示数据:currPage(当前页数)、List、totalPage(总页数.需要通过总记录数进行计算.)、totalCount(总记录数)、limit(每页显示的记录数).

*将这些参数进行封装.封装到一个JavaBean中.用request域存取JavaBean.

Oracle中的分页:

Oracle中分页用rownum;

rownum的特点是:

1. rownum永远按照默认的顺序生成

2. rownum只能使用< <=; 不能使用> >=

(关于rownum的特点我在上一个博文中解释第一题已经说了一些:忘记请点击)

SQL> --分页

SQL> selectrownum,empno,ename,sal2 fromemp3 where rownum>=5 and rownum<=8;

未选定行

SQL> selectrownum,empno,ename,sal2 fromemp3 where rownum>=5;

未选定行

解决方法是:

--oracle分页

SQL> select *

2 from (select rownum r,e1.*

3 from (select * from emp order bysal) e1

4 where rownum <=8

5)

6 where r >=5;

R EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

---------- ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

5 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30

6 7934 MILLER CLERK 7782 23-1月 -82 1300 10

7 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30

8 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30

详细的分析过程因为博客园 编辑器不够强大,我用word解释了,这里附截图和部分SQL文:

这个是从第二个select开始的sql语句:

SQL> select rownum r,e1.*

2 from (select * from emp order bysal) e13 where rownum <=8

4;

R EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

1 7369 SMITH CLERK 7902 17-12月-80 800 20

2 7900 JAMES CLERK 7698 03-12月-81 950 30

3 7876 ADAMS CLERK 7788 23-5月 -87 1100 20

4 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30

5 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30

6 7934 MILLER CLERK 7782 23-1月 -82 1300 10

7 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30

8 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30已选择8 行。

7594c9eb9609a97f33ef87120167dffc.png

逻辑分页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值