在oracle数据库表中没有添加rowid字段为什么会出现?

rowid 是 oracle 数据库表中的伪列, rowid 首先是一种数据类型,它唯一标识一条记录物理位置, 基于64位编码的18个字符显示。因为 rowid 是伪列, 所以并未真的存储在表中,但可以从表中查询,但不支持插入,更新,删除它们的值。

其他的伪列还有 rownum (行号)
 
追问
将rownum设为主键时建立几条模拟数据后当根据rownum查询时只能查询出来第一条记录,后来的记录则呢么就查不到了啊,谢谢了。
 
追答
rownum 是伪列,你不可能把 rownum 作为表的主键的。需要注意的是 rownum 是指查询结果集的行号,而不是表的行号。比如:

select * from tab where rownum=9; 即使 tab 表中有很多记录,但这个 sql 语句是永远也查不出数据的, 因为你指定了 rownum =9 作为查询条件,因而是单行查询,查询结果最多只能返回一条记录,也就是说 rownum 最多=1, 是不可能等于9 的。
posted @ 2017-10-26 09:30  习惯沉淀  阅读(1681)  评论(0编辑  收藏  举报