原因一 oracle默认为每个表生成rowmun,rowid字段,这些字段我们称之为伪列

测试表

CREATE TABLE A
(
AID NUMBER(20) primary key,
ANAME VARCHAR2(200)
)

insert into A values(1,'甲骨文');
insert into A values(2,'微软');
insert into A values(6,'ioe');
insert into A values(7,'iBe');
insert into A values(5,'iAe');

insert into A values(8,'甲骨文1');

insert into A values(9,'微软3');
insert into A values(10,'ioe4');
insert into A values(11,'iBe5');
insert into A values(12,'iA11');

简单的分页  例:SELECT ROWNUM  ,a.FROM A a;

既然提到了 ROWNUM 就提下ROWID把

例子:SELECT rowid,rownum,AID,ANAME FROM A;

oracle数据库的表中的每一行数据都有一个唯一的标识符,或者称为rowid,在oracle内部通常就是使用它来访问数据的。rowid需要 10个字节的存储空间,并用18个字符来显示。该值表明了该行在oracle数据库中的物理具体位置。可以在一个查询中使用rowid来表明查询结果中包含该值。

保存rowid需要10个字节或者是80个位二进制位。这80个二进制位分别是:
      1. 数据对象编号,表明此行所属的数据库对象的编号,每个数据对象在数据库建立的时候都被唯一分配一个编号,并且此编号唯一。数据对象编号占用大约32位。
      2. 对应文件编号,表明该行所在文件的编号,表空间的每一个文件标号都是唯一的。文件编号所占用的位置是10位。
      3. 块编号,表明改行所在文件的块的位置块编号需要22位。
      4. 行编号,表明该行在行目录中的具体位置行编号需要16位。
这样加起来就是80位。

Oracle的物理扩展ROWID有18位,每位采用64位编码,分别用A~Z、a~z、0~9、+、/共64个字符表示。A表示0,B表示1,……Z表示25,a表示26,……z表示51,0表示52,……,9表示61,+表示62,/表示63。

owid一般用不到,Oracle内部用来存储行的物理位置,和分页相关的就是rownum,也就是行号

1.查询小于4的行,查询出三条结果

SELECT ROWNUM,a.* FROM A a where rownum <4;

2 查询大于2小于5的行

例子:select rownum,Aid,aname from A where rownum>2 and rownum <5;

你会发现这个为空,

ROWNUM  只适用与小于或者小于等于,如果进行等值判断那么只能为1

ROWNUM 在oracle是系统分配顺序的编号,返回的第一行分配的是1,第二行是2,后面依次类推

ROWNUM 总是从1开始

ROWNUM 若进行等值判断 需要满足两个条件ROWNUM>1,则第一行被去掉,之前的第二行变为新的第一行,如此下去,一直到最后,条件都无法满足,所以一条数据都无法查出

3.分页的正确,应该用嵌套的SQL

select rownum ,a.AID FROM
(SELECT ROWNUM ,AID,ANAME FROM A) a
where rownum>0 and rownum<5;

4,如果要进行分页

加入现在是第num页,每页显示PAGESIZE条记录,则这个如何写
r>PAGESIZE*(num-1) 前面的页数
r<PAGESIZE*num+1 后面的页数

5.还有一种用函数计算范围 between and

SELECT *
FROM (SELECT a.*, ROWNUM FROM (SELECT * FROM A) a)
WHERE ROWNUM BETWEEN 0 AND 5;

转载于:https://www.cnblogs.com/yijieyufu/p/11148739.html

ORACLE分页 两种分页方法和ROWID用法相关推荐

  1. bootstrap layui 两种分页的实现

    最近做的项目中后台界面用的layui框架,前台界面用的是boostrap框架,这就导致我在做分页的过程中要考虑前台两种分页的动态实现,现在我已经爬出这个坑了,哈哈,给大家分享一下,写的不好的地方请大家 ...

  2. SQL SERVER两种分页的存储过程介绍

    由于现在很多的企业招聘的笔试都会让来招聘的写一个分页的存储过程,有的企业甚至要求应聘者用两种方式实现分页,如果没有在实际项目中使用过分页,那么很多的应聘者都会出现一定的问题,下面介绍两种分页的方法. ...

  3. Sql分页两种常用算法

    今天花了两个小时,写了两种分页的算法. --not in删选法,这种方法查询某个表中前面的数据效率高 create procedure Page_proc ( @pageSize int, --页数, ...

  4. java oracle的2种分页方法

    java oracle的2种分页方法 一物理分页: <!-- 分页查询所有的博客信息 --><select id="findBlogs" resultType=& ...

  5. lucene的两种分页操作

    2019独角兽企业重金招聘Python工程师标准>>> lucene的两种分页操作 博客分类: 搜索引擎,爬虫 java 基于lucene的分页有两种: lucene3.5之前分页提 ...

  6. sql server两种分页方法

    方法一: --分页方法一 select top 10 OrderID,CustomerID, EmployeeID,OrderDate,ShippedDate,ShipName,ShipAddress ...

  7. html按照字数分页,纯javascript实现分页(两种方法)

    先给大家贴效果图: 网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了.其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用 ...

  8. php javascript分页,纯javascript实现分页(两种方法)

    有的时候页面需要很多不同的表组成的数据,该怎么分页呢?使用数据库分页很简单,那么如何使用js实现分页呢?接下来,小编帮大家解决这个问题,需要的朋友一起来学习吧 先给大家贴效果图: 网上确实有很多分页的 ...

  9. iOS开发 - 商品详情页两种分页模式,只提供思路和实现方式。

    上面的效果是商品详情页常用的两种模式,分页和不分页.首先请忽略博主懒得去写界面,真正的效果见下面: 不分页模式 分页模式 然后先来依次说明下原理: 分页模式:看着和下拉刷新上拉加载的时候像不像?没错, ...

最新文章

  1. 关系数据库设计【笔记】
  2. 维护一套同时兼容 iOS 6 和 iOS 7,并且能够自动适应两个系统的 UI 风格的代码...
  3. 动态创建asp.net控件之我见
  4. flask echarts词云可视化_基于flask框架的高校舆情分析系统
  5. web开发入门_Web开发人员和设计师的自由职业入门
  6. mysql数据库之联表查询
  7. SQL 关于提示SQL Server 2008评估期已过解决办法
  8. 基于Java的电子会议预约管理系统
  9. Unity 2017-2019各个版本unityhub下载连接
  10. DRAM Timing
  11. OpenSSL BIO源码简析
  12. 丁小平微积分研究成果刍议(转载)
  13. iPhone5 iOS6.1系统完美越狱教程
  14. 活久见 kernel:NMI watchdog: BUG: soft lockup - CPU#8 stuck for 28s! [xsoftdd/12:0]
  15. 云电脑用什么连接键盘才能玩游戏
  16. PCIe设备驱动demo
  17. 【源头活水】IEEE TIFS 2022 | 基于不确定因素感知的鲁棒虹膜识别
  18. 那些测试员面试中的“潜规则”,千万不要踩坑
  19. 大学生综合测评系统(C++)
  20. 雷观(二十):个人竞争策略,战国策与个人略

热门文章

  1. ORA 各种oraclesql错误
  2. BZOJ1567 [JSOI2008]Blue Mary的战役地图
  3. 【转载】常用数据增强方法总结及实现
  4. 到底什么是444天线?
  5. 软件测试模糊搜索用例,模糊测试中测试用例生成方法.pdf
  6. 使用SQL语句创建数据表(SQL Server)
  7. 前端angular与服务器端nodejs实现从mysql数据库读取数据实现前后端交互实例
  8. 硬盘使用率100%——禁用SuperFetch
  9. mysql主从有关参数_MySQL 主从复制相关参数
  10. 02.控制反转(IoC)