ITPub博客

首页 > 数据库 > Oracle > Oracle中rownum、rowid区别

Oracle中rownum、rowid区别

Oracle 作者:wdb198622 时间:2013-12-08 13:04:59 0 删除 编辑

尾先来说一下rownum与rowid含义:

顾名思义rownum就是行数/行号,而rowid就是编码/编号/独一辨认号,所以他是相似“AAAR8gAAEAAAAErAAK”的编号,注重他是出有先后次第的,也就是讲他战数据进库时候出有任何关系,打个歧:他就像磁盘、内存存储数据用的是16进造的所在一样。

 

他们都是真列,能够理解成表中的一个列只是他们并没有是你创立的。一样是真列区别是甚么呢?

 

rowid是你录进数据时无数据库主动为这笔记实减减的独一的18位编号是一个物理编号用于找到这笔记实(顺便讲一句这也是为甚么数据劣调的时分夸年夜尽可能运用rowid的本果),他是没有会随着查询而改变的 除非在表发死移动(比如表空间改进,数据导进/导出古后),才会发死改进。

 

rownum是遵循sql查询后得到的成果主动减上往的,可是他却没有遭到sql中order by排序的影响,果为他战rowid的次第一样是体系遵循记实插进时的次第给记实排的号(次第的、无腾踊)。 可是若是你念让rownum战order by一样的次第 那么能够运用子查询,形如:select rownum,t.* from (select * from 表空间名 order by 字段名) t  如许的话rownum就是遵循该字段停止排序的编号了,为甚么会如许呢,本人理解:rownum是遵循表记实输出的行号,与挑选语句、排序语句都无关所以当用子查询时即是死成了一个表于是就遵循这张表从1起头排序了。 一样,也能够用下面要提得到的阐发函数中的row_number() over(order by 需供排序的字段名)。

  

值得一提的是MSSQL是出有rownum战rowid的。

http://blog.csdn.net/tomatofly/article/details/5939045


附上oracle分页查询语句:

 

分页查询花样:

SELECT * FROM 
(
SELECT A.*, ROWNUM RN 
FROM (SELECT * FROM TABLE_NAME) A 
WHERE ROWNUM <= 40
)
WHERE RN >= 21


<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21798415/viewspace-1115697/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-06-02