Oracle 中的 ROWID 和 ROWNUM


在 Oracle 的表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就像表中的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改查操作。oracle 中的 ROWID 和 ROWNUM 就是其中的伪列:

  1. Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0    
  2. Connected as scott  

一、ROWID:表中没列数据的物理地址。通过 ROWID 查询表的效率是最高的。

  1. SQL> select t.ename,rowid from emp t;   
  2.     
  3. ENAME      ROWID   
  4. ---------- ------------------   
  5. SMITH      AAAR3sAAEAAAACXAAA   
  6. ALLEN      AAAR3sAAEAAAACXAAB   
  7. WARD       AAAR3sAAEAAAACXAAC   
  8. JONES      AAAR3sAAEAAAACXAAD   
  9. MARTIN     AAAR3sAAEAAAACXAAE   
  10. BLAKE      AAAR3sAAEAAAACXAAF   
  11. CLARK      AAAR3sAAEAAAACXAAG   
  12. SCOTT      AAAR3sAAEAAAACXAAH   
  13. KING       AAAR3sAAEAAAACXAAI   
  14. TURNER     AAAR3sAAEAAAACXAAJ   
  15. ADAMS      AAAR3sAAEAAAACXAAK   
  16. JAMES      AAAR3sAAEAAAACXAAL   
  17. FORD       AAAR3sAAEAAAACXAAM   
  18. MILLER     AAAR3sAAEAAAACXAAN   
  19.     
  20. 14 rows selected   
  21.   
  22. SQL> select t.ename,rowid from emp t where t.rowid = 'AAAR3sAAEAAAACXAAA';   
  23.     
  24. ENAME      ROWID   
  25. ---------- ------------------   
  26. SMITH      AAAR3sAAEAAAACXAAA  

Oracle 中的各种索引则是通过不同的渠道获得 ROWID 从而达到高效率查询。

二、ROWNUM:表示结果集中每一行的行号,第一行为1,每行行号增加1,且 WHERE 条件中 ROWNUM 不能大于。

  1. SQL> select ename,rownum from emp;   
  2.     
  3. ENAME          ROWNUM   
  4. ---------- ----------   
  5. SMITH               1   
  6. ALLEN               2   
  7. WARD                3   
  8. JONES               4   
  9. MARTIN              5   
  10. BLAKE               6   
  11. CLARK               7   
  12. SCOTT               8   
  13. KING                9   
  14. TURNER             10   
  15. ADAMS              11   
  16. JAMES              12   
  17. FORD               13   
  18. MILLER             14   
  19.     
  20. 14 rows selected   
  21.   
  22.   
  23. --利用 ROWNUM 实现分页功能。(每页显示5条数据,显示第二页)   
  24. SQL> select * from (select * from (select ename,rownum r from emp) t where r <= (2*5)) t2 where r > ((2-1)*5);   
  25.     
  26. ENAME               R   
  27. ---------- ----------   
  28. BLAKE               6   
  29. CLARK               7   
  30. SCOTT               8   
  31. KING                9   
  32. TURNER             10  

更多Oracle相关信息见Oracle 专题页面 http://www.bkjia.com/topicnews.aspx?tid=12

相关内容