Oracle的伪列说明

来源:互联网 发布:gta5神作 知乎 编辑:程序博客网 时间:2024/04/30 02:35

1、rownum是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值,这是为什么Oracle的伪列rownum不支持>,>=,=,between...and,而都用<比较

2、rowid 与 rownum 虽都被称为伪列,但它们的存在方式是不一样的,rowid 可以说是物理存在的,表示记录在表空间中的唯一位置ID,在DB中唯一。只要记录没被搬动过,rowid是不变的。rowid 相对于表来说又像表中的一般列,所以以 rowid 为条件就不会有 rownum那些情况发生

3、oracle系统为了实现完整的关系数据库功能,系统专门提供了一组成为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象时由我们完成的,而是在我们建立时由Oracle完成的。Oracle目前有以下伪列:
伪列:
CURRVAL AND NEXTVAL 使用序列号的保留字
LEVEL 查询数据所对应的级
ROWID 记录的唯一标识
ROWNUM 限制查询结果集的数量
伪表
DUAL
该表主要目的是为了保证在使用SELECT语句中的语句的完整性而提供的

 

对应一道oracle面试题:

查出一个超过100条以上查询结果集10到100行之间的数据


select * from tbl_nvhl_policy where rownum<100 minus select * from  tbl_nvhl_policy where rownum<10

 

 

0 0