首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Oracle数据库的SQL分页模板

    在系统开发过程中,需要对数据进行查询,大部分情况下从数据库中查询的数据量比较大,在系统页面无法全部显示,而且查询全部的数据会影响系统的反应速度,需要对所查询的数据进行分页的查询操作,以此减轻系统的压力。在Oracle数据库中,如何完成分页SQL的编写,影响着系统开发的速度,特提供两个SQL的分页模板:采用oracle的内置函数ROWNUM。(ROWNUM是结果的伪列,仅仅当聚集结果时产生,但早于排序或聚合)采用oracle的内置函数ROW_NUMBER。在数据库之外的分页之中,应用层缓存技术分页不可避免地产生大量的网络流量;游标驱动分页在数据库里完成操作,会受到游标技术的影响,使得分页变得“陈旧”。

    06

    sql3

    SCOTT>select ename,sal   2  from emp e,   3  (select deptno,avg(sal) avg_sal from emp group by deptno) s   4  where e.deptno=s.deptno and e.sal>s.avg_sal; ENAME          SAL ---------- ---------- BLAKE         2850 ALLEN         1600 FORD         3000 SCOTT         3000 JONES         2975 KING         5000 6 rows selected. SCOTT>select ename,sal from (select rownum no,e.* from emp e where rownum<=8) where no >=5 order by sal desc; ENAME          SAL ---------- ---------- SCOTT         3000 BLAKE         2850 CLARK         2450 MARTIN         1250 SCOTT>select * from (select * from emp order by sal desc) where rownum<=3;      EMPNO ENAME      JOB           MGR HIREDATE        SAL       COMM     DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ----------       7839 KING       PRESIDENT        17-NOV-81       5000            10       7788 SCOTT      ANALYST          7566 19-APR-87       3000            20       7902 FORD       ANALYST          7566 03-DEC-81       3000            20       SCOTT>select * from   2  (select row_number() over(partition by deptno order by sal desc) no,ename,sal,deptno   3  from emp)   4  where no<=2   5  ;     NO ENAME         SAL     DEPTNO ---------- ---------- ---------- ----------      1 KING         5000     10      2 CLARK        2450     10      1 SCOTT        3000     20      2 FORD         3000     20      1 BLAKE        2850     30      2 ALLEN        1600     30 6 rows selected.

    01
    领券