当我做以下问题时,我对 rowid 的定义感到困惑。哪一个是正确的?
ROWID 是: 1. 一个整数,形式为与从数据库中检索的每一行相关联的序列号。
2. 一个base-64 数字,表示数据库数据文件中一行的物理位置。
您将 rownum 与 rowid 混淆了。
ROWID 伪列返回行的地址。Oracle 数据库 rowid 值包含定位行所需的信息。
https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm
ROWNUM 伪列返回一个数字,指示 Oracle 从一个表或一组连接行中选择行的顺序
https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm
select rowid, rownum, name from sys.system_privilege_map
where rownum < 10;
ROWID ROWNUM NAME
AAAAFtAABAAAAiBADP 1 FLASHBACK ARCHIVE ADMINISTER
AAAAFtAABAAAAiBADO 2 ALTER DATABASE LINK
AAAAFtAABAAAAiBADN 3 ALTER PUBLIC DATABASE LINK
AAAAFtAABAAAAiBADM 4 ADMINISTER SQL MANAGEMENT OBJECT
AAAAFtAABAAAAiBADL 5 UPDATE ANY CUBE DIMENSION
AAAAFtAABAAAAiBADK 6 UPDATE ANY CUBE BUILD PROCESS
AAAAFtAABAAAAiBADJ 7 DROP ANY CUBE BUILD PROCESS
AAAAFtAABAAAAiBADI 8 CREATE ANY CUBE BUILD PROCESS
AAAAFtAABAAAAiBADH 9 CREATE CUBE BUILD PROCESS
ROWID 在查询中很少使用。另一方面,ROWNUM 经常用于限制结果的数量,如上所示。