oracle的伪列以及伪表

oracle系统为了实现完整的关系数据库功能,系统专门提供了一组成为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象时由我们完成的,而是在我们建立时由Oracle完成的。Oracle目前有以下伪列:

一、伪列:

CURRVAL AND NEXTVAL 使用序列号的保留字

LEVEL 查询数据所对应的层级

ROWID 记录的唯一标识

ROWNUM 限制查询结果集的数量

Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行修改、插入。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即使该行产生行迁移,行的rowid也不会改变。

ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。如果你用>,>=,=,between...and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。

二、伪表

DUAL 表

该表主要目的是为了保证在使用SELECT语句中的语句的完整性而提供的。

一般用于验证函数。例如:

select sysdate,to_char(sysdate,'yyyy-mm-dd HH24:mm:ss') from dual

oracle的几个伪列函数

ORACLE有几个函数专门用来产生伪列的,rownum,rowid,row_number(),rank,dense_rank,lan

1 Connect by 语句

该语句结合伪列rownum或level 可以产生一个结果集.

1. 基本用法:

产生1~~100之间的整数

Select rownum xh from dual connect by rownum<=100;

Select level xh from dual connect by level<=100;

2. 高级用法

2.1.产生所有汉字,汉字内码为:19968~~~40869之间

select t.* from(

select rownum xh,nchr(rownum) hz from dual

connect by rownum<65535

) t

where t.xh between 19968 and 40869

2 rownum按行的顺序自动增加产生

row_number() 给每个组内的不同记录进行排号(分组可不设)

select t.c_group,

t.c_code,

t.c_desc,

row_number() over(PARTITION BY c_group ORDER BY c_desc DESC) rn

from tp_dictionary t

where t.c_group in ('PPSJ001', 'PPSJ002');

3 Rank() 按并列情况跨越排序

select t.c_group,

t.c_code,

t.c_desc,

Rank() over( ORDER BY c_code ) rn

from tp_dictionary t

where t.c_group in ('PPGL001', 'PPSJ002');

4 Dense_Rank() 按并列情况排序,不跳跃

select t.c_group,

t.c_code,

t.c_desc,

Dense_rank() over( ORDER BY c_code ) rn

from tp_dictionary t

where t.c_group in ('PPGL001', 'PPSJ002');

5 Lag对列进行偏移(下面是偏移2列)

select t.c_group,

t.c_code,

t.c_desc,

lag(c_code,2,null) over(PARTITION BY c_group ORDER

BY c_desc asc) rn

from tp_dictionary t

where t.c_group in ('PPGL001', 'PPSJ002');

oracle分组后伪列,Oracle伪列和伪表和分组函数(row_number,Rank)相关推荐

  1. python 数据分组后看每组多少个_【Python】分组统计GroupBy技术详解

    摘要 进行数据分析时,GroupBy分组统计是非常常用的操作,也是十分重要的操作之一.基本上大部分的数据分析都会用到该操作,本文将对Python的GroupBy分组统计操作进行讲解. 1.GroupB ...

  2. oracle 从后往前,oracle从后往前截取字符串 oracle截取字符串后三位

    oracle怎么从后开始截取字符? 1.在oracle中经常需要使用到截取字符串函数substr.语法:substr(str,num1,[num2]) 默认情况下都是只需要两个参数,它的意思是从第二个 ...

  3. oracle排序后第一条,Oracle排序取第一条数据

    Oracle需要更新套组的大单位, 规则是取第一个学员(套组ID最小)的单位信息. Oracle需要更新套组的大单位, 规则是取第一个学员(套组ID最小)的单位信息. 采用按照SUITEID排序取第一 ...

  4. 关于oracle分组后组外排序的问题

    [求助]关于oracle分组后组外排序的问题 只用查询语句实现: DEPTNO ENAME                SAL          TOP3 ---------- ---------- ...

  5. group by 查询分组后 各组的内部条数与组的条数

    一.group by 查询分组后 各组的内部条数 说明:表:survey_consumer ,字段:profession SELECT COUNT(*) num,profession FROM sur ...

  6. JAVA使用stream对数据分组后求每组的最大值

    JAVA stream对数据分组后求每组的最大值 具体需求 对industryCode分组,然后通过取出每组的num的最大值 // 实体类 @Data @AllArgsConstructor publ ...

  7. mysql查询数据分组后保留每组前n条数据

    最近做项目遇到一个这样需求的sql语句,根据一系列的条件后,分组查询出来的数据是这样的 可以看到用户id=4 的有三条数据,用户id=1的有两条数据. 我需求是相同的用户id只取最多两条数据,也就如下 ...

  8. oracle求一行多列最大值,Oracle分组后取某列最大值的行数据

    select * from ( select last_comment, row_number() over(partition by employeeid,roadline,stationname ...

  9. oracle无法减小列长度,中国港湾扩展表单分配时调整字段后保存时报错,无法正常维护表单定义...

    版本号: 7.0.4 业务场景(如下):中国港湾扩展表单分配时调整字段后保存时报错,无法正常维护表单定义 异常提示: 异常信息:添加业务实体的时候出错. 导致错误的应用程序或对象的名称:Generso ...

最新文章

  1. Uva 11396 爪分解
  2. AndroidStudio JNI: 使用CMake编译tensorflow
  3. java 数据结构_Java版-数据结构-队列(数组队列)
  4. 轨迹分析_肌力测试 心理测评 轨迹分析 科技助力体能训练 让备战更高效
  5. 【NOI2016】循环之美,mobius反演+杜教筛
  6. CentOS中nginx负载均衡和反向代理的搭建
  7. vim 查找相同行 删除向同行
  8. 赏析角度有哪些_从哪些角度赏析句子
  9. 操作系统 实时调度
  10. iPhone手机使用:苹果新款手机(iPhone X、iPhone XS Max、iPhone XR等)关机、截屏等快捷键
  11. failover.mysql_物理standby的Failover
  12. MarkMan(马克鳗)的下载及安装方法
  13. 【编译原理】NFA转DFA(子集构造法)
  14. jsp对象的四大作用域的简单介绍
  15. 在线生成 latex 表格代码
  16. tikz中谐振子(弹簧)的绘制,以及声子色散关系的绘制
  17. 计算机在英语写作中应用,多媒体计算机技术在初中英语写作中应用.doc
  18. jQuery幻灯片带缩略图平移滑动焦点图
  19. 设计模式 | 备忘录模式及典型应用
  20. A*:python实现A星寻路算法可视化

热门文章

  1. 注解版poi操作工具
  2. angular2或4部署到tomcat中,让他跑起来
  3. python删除过期文件_python删除过期文件的方法
  4. [转载] 【基础教程】Python input()函数:获取用户输入的字符串
  5. python中info的用法_Python pandas.DataFrame.info函数方法的使用
  6. 一个jsp能取到父类jsp的值吗_「Javaweb」ssm整合权限控制框架shiro,你知道怎么做吗?...
  7. PHP登录表单提交前端验证,form表单提交前先用ajax进行验证(前端)
  8. 优秀的基数统计算法——HyperLogLog
  9. 阿里Java开发手册——如何优化数据库?
  10. 《JavaScript权威指南》——JavaScript核心