在 Oracle 的表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就像表中的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改查操作。oracle 中的 ROWID 和 ROWNUM 就是其中的伪列:
- Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
- Connected as scott
一、ROWID:表中没列数据的物理地址。通过 ROWID 查询表的效率是最高的。
- SQL> select t.ename,rowid from emp t;
-
- ENAME ROWID
- ---------- ------------------
- SMITH AAAR3sAAEAAAACXAAA
- ALLEN AAAR3sAAEAAAACXAAB
- WARD AAAR3sAAEAAAACXAAC
- JONES AAAR3sAAEAAAACXAAD
- MARTIN AAAR3sAAEAAAACXAAE
- BLAKE AAAR3sAAEAAAACXAAF
- CLARK AAAR3sAAEAAAACXAAG
- SCOTT AAAR3sAAEAAAACXAAH
- KING AAAR3sAAEAAAACXAAI
- TURNER AAAR3sAAEAAAACXAAJ
- ADAMS AAAR3sAAEAAAACXAAK
- JAMES AAAR3sAAEAAAACXAAL
- FORD AAAR3sAAEAAAACXAAM
- MILLER AAAR3sAAEAAAACXAAN
-
- 14 rows selected
-
- SQL> select t.ename,rowid from emp t where t.rowid = "AAAR3sAAEAAAACXAAA";
-
- ENAME ROWID
- ---------- ------------------
- SMITH AAAR3sAAEAAAACXAAA
Oracle 中的各种索引则是通过不同的渠道获得 ROWID 从而达到高效率查询。二、ROWNUM:表示结果集中每一行的行号,第一行为1,每行行号增加1,且 WHERE 条件中 ROWNUM 不能大于。
- SQL> select ename,rownum from emp;
-
- ENAME ROWNUM
- ---------- ----------
- SMITH 1
- ALLEN 2
- WARD 3
- JONES 4
- MARTIN 5
- BLAKE 6
- CLARK 7
- SCOTT 8
- KING 9
- TURNER 10
- ADAMS 11
- JAMES 12
- FORD 13
- MILLER 14
-
- 14 rows selected
-
-
- --利用 ROWNUM 实现分页功能。(每页显示5条数据,显示第二页)
- SQL> select * from (select * from (select ename,rownum r from emp) t where r <= (2*5)) t2 where r > ((2-1)*5);
-
- ENAME R
- ---------- ----------
- BLAKE 6
- CLARK 7
- SCOTT 8
- KING 9
- TURNER 10
更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle 使用 ROUND 和 EXTRACT 操作日期Oracle 日志文件、参数文件、控制文件备份恢复相关资讯 Oracle数据库基础教程
- 在Oracle数据库中插入含有&符号的 (03/06/2013 09:20:14)
- Oracle 执行计划更改导致数据加工 (02/13/2013 14:45:04)
- 判断Oracle Sequence是否存在 (02/13/2013 14:32:26)
| - Oracle数据库中无法对数据表进行 (02/26/2013 14:24:58)
- Oracle 在同一台主机上建立用户管 (02/13/2013 14:40:58)
- Oracle em 无法启动,报not found错 (02/13/2013 14:29:48)
|
本文评论 查看全部评论 (0)