(1)概念
Top-N:创建表时,没有定义过的列,不在表结构中,为存储在表中,查询后,自动附加的列,查询时,自动生成值,只能 查询,不能update、delete、insert。(根据某一规则进行排序,然后取其前N行数据。)常见的伪列分为以下几种: rowid、rownum。
Currval和nextval使用序列号的保留字
Level查询数据所有对应的层级(了解)
Rowid记录的唯一标识
Rownum限制查询结果集的数量
Currval和nextval使用序列号的保留字
Currval:返回当前sequence值
Nextval:增加sequence并返回下一个值
RowID:存储表中每一行在记录的物理地址,唯一可以标识表中的一行,插入记录产生的。使用rowID可以快速的定位表中 的某一行。(是一种数据类型,不可更改的,索引都是基于伪列的,使用rowID是查询效率最高的一种方式)。一旦一行数 据插入数据库,则rowID在该行的生命周期内是唯一的,即使该行产生迁移,行的rowID也不会改变。
例如:select rowid as 伪列 e.job from emp e
(2)伪列rownum
注意:rownum只能< 或者 <=,而使用 >,>=,=时不能返回任何数据。
Rownum:伪列,数据表中本身没有这样的列,是Oracle数据库为每一个数据表加上的列,可以识别行号,默认情况下, rownum按主索引来排序,若没有主索引则自然排序。对Oracle分页必须使用rownum。在对表的查询中,每返回一条记 录,rownum伪列就返回一个数字,代表查询返回的行的编号。
select employee_id,last_name,salary
from (select rownum rn,employee_id,last_name,salary
from employees e
where e.rn <= pageNo * pageSize and e.rn > (pageNo-1)* pageSize
(3)伪表 DUAL
该表主要的目的是为了保证在使用select语句中的语句的完整性而提供的。
SELECT sysdate FROM dual;
如上描述如有不懂,可以扫码关注麒琳技术栈公众号,欢迎在线咨询