Oracle ~ 伪列
Oracle的伪列是Oracle表在存储的过程中或查询的过程中,表会有一些附加列,称为伪列。伪列就像表中的字段一样,但是表中并不存储。伪列只能查询,不能增删改。Oracle的伪列有:rowid、rownum。
ORACLE ROWID
Oracle表中的每一行在数据文件中都有一个物理地址, ROWID 伪列返回的就是该行的物理地址。使用 ROWID 可以快速的定位表中的某一行。 ROWID 值可以唯一的标识表中的一行。通过Oracle select 查询出来的ROWID,返回的就是该行数据的物理地址。
ROWID代码:
select t.*,t.rowid from stuinfo t ;
select t.*,t.rowid from stuinfo t where t.rowid='AAAShjAAEAAAAEFAAD';
结果如下:
ORACLE ROWNUM
ORACLE ROWNUM表示的Oracle查询结果集的顺序,ROWNUM为每个查询结果集的行标识一个行号,第一行返回1,第二行返回2,依次顺序递增。
ROWNUM 与 ROWID 不同, ROWID 是插入记录时生成, ROWNUM 是查询数据时生成。ROWID 标识的是行的物理地址。 ROWNUM 标识的是查询结果中的行的次序。
ROWNUM代码:
select t.stuid,t.stuname,t.sex,t.classno,t.stuaddress ,rownum from stuinfo t ;
结果如下:
ROWNUM经常用来限制查询的结果返回的行数,求前几行或前几名的数据。
案例1、返回学生信息表中(stuinfo)中学生年龄最低的前四位同学。
代码:
select * from (select t.stuid, t.stuname, t.sex, t.classno, t.stuaddress, t.age, rownum
from stuinfo t
order by t.age asc) where rownum <=4;
结果如下: