什么是Oracle数据库伪列,ORACLE数据库(五)-----伪列

一、伪列的定义

可以理解为一种伪装起来、不容易看到的字段,除非特意查询,否则不会有所显现。

与一般字段最明显的区别:一般字段可以通过SELECT * 查到,查看某张表的表结构时也能查到,而伪列需要特定的查询才可以看到,表结构中也不会有所显示。

二、ROWNUM

ROWNUM是对查询结果自动生成的一个从1开始的、连续的(自然数)序号,它会随着查询步骤的进行而不断发生变化,直到[SELECT]子句执行结束

1 序号生成时间

ROWNUM是从FROM开始生成到SELECT停止变化(在第一篇中有写到SQL语句执行顺序)

SELECT T.*,ROWNUM FROM EMP T WHERE T.DEPTNO = 20;

SELECT T.*,ROWNUM FROM EMP T WHERE T.DEPTNO = 20 ORDER BY SAL DESC;1

2

3dc078aa3f688b7ccf3c33c2dd19c3a6.png

589630e46775a096c2fc15e305cd4f19.png

2 ROWNUM在WHERE中的使用限制

ROWNUM < N — N > 1

ROWNUM <= N — N > 0

ROWNUM <> N – N <> 1

ROWNUM = N – N = 1

ROWNUM > N – N < 1

ROWNUM >= N – N <= 1

ROWNUM BETWEEN N1 AND N2 – N1 <= 1 N2 >= 1 / N1 <= 1<= N2

查询范围内至少包含第1个才能有数据

查询员工工资排在第四名到倒数第四名的员工

SELECT *

FROM (SELECT A.*,ROWNUM RN FROM (SELECT * FROM EMP T ORDER BY SAL DESC) A) B

WHERE B.RN BETWEEN 4 AND (SELECT COUNT(1)-3 FROM EMP) ;1

2

3

4

5

3 注意点

1 伪列前不要加T.

2 不要将ROWNUM用在GROUP BY和HAVING中

三、ROWID

类似于房间号,每一条数据存入到数据库中时,ORACLE都会为其自动生成一条固定不变的、唯一的18位字符串,用以记录该条数据在数据库中的物理位置。

SELECT T.*,ROWID FROM EMP T WHERE DEPTNO = 10;1

247d0c8f233b0439367336033b85baec.png

ROWID可以精确去除重复数据中的一条

--尝试删掉多余数据仅保留一条 重复数据比较少 太多就不适合用这个删除

SELECT T.*,ROWID FROM CLS74 T;

DELETE FROM CLS74 WHERE ROWID <> 'AAASSbAAEAAAAIsAAD' AND SNO = 4;1

2

3

1 在数据库中,直接查询目标数据的ROWID,是查询数据最快、最准确的方法,但一般不用。

2 不允许手动修改ROWID

3 在数据库中不重复

文章来源: blog.csdn.net,作者:浅语呀,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/c727657851/article/details/115007942

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值