跳到主要内容

简述Oracle中rowid, rownum的定义?

参考答案:

在Oracle中,rowid和rownum都是伪列,它们在物理上并不真正存在于表中,而是在特定的数据库操作中发挥作用。

rowid是数据库的一个伪列,它在建立表的时候由数据库自动为每个表创建。rowid是数据库中每一条记录的唯一标识,它存储了每条记录的实际物理地址。对记录的访问是基于rowid进行的。rowid可以分为物理rowid和逻辑rowid两种,普通堆表中的rowid是物理rowid,而索引组织表(IOT)的rowid则是逻辑rowid。rowid值主要包含对象的数据对象编号、该行所在的数据文件中的数据块、该行中数据块的位置以及数据行所在的数据文件等信息。

另一方面,rownum是Oracle对查询结果集加的一个伪列,它表示的是符合查询条件的结果的序列号。rownum总是从1开始排起,根据SQL查询出的结果给每行分配一个逻辑编号。因此,不同的SQL查询可能会得到不同的rownum值。

总的来说,rowid和rownum在Oracle中各自扮演着重要的角色。rowid是数据库中记录的唯一物理标识,而rownum则是查询结果集的逻辑编号。它们都是数据库管理和操作中不可或缺的元素。