rownum和rowid都是伪列,但是两者是不同的。
rownum是根据sql查询出的结果给每行分配一个逻辑编号。
select name from student t where rownum < 3;
正确的,可以执行,按照查找的记录动态分配rownum,从1开始分配。
select name from student t where t.rownum < 3;
错误的,t.rownum不属于表属性。
rowid是物理结构上的,在每条记录insert到数据库中时,都会有一个唯一的物理记录。其它记录的删除不会影响到本记录的rowid。
seelct name from student t where t.rowid = 'AAAUY3AAEAAAQgGAAA';
正确的,t.rowid属性表属性。