ROWNUM和ROWID的认识

作者:杨裙
本次任务完成时间:2019年4月6日
开发工具与关键技术:Oracle sql*plus 、 PLSQL Developer

1、 ROWNUM:
ROWNUM它是ORACLE分页查询,ROWNUM是对结果集添加的一个伪列,即先查到结果集之后在加上去的一个伪列,一定要先有结果集,ROWNUM它是对符合条件的序列号,它总是从1开始进行排序。在ROWNUM语句中不能直接写在查询的语句上,因为这样查询出来的结果全部都是乱序。所以都是把ROWNUM放在子查询的外层,查询出来即可。有些子查询会存在ORDER BY 排序的写法,因为ORDER BY 无论在什么语句中其执行顺序都是最后才进行执行,所以只能让其排序,把ROWNUM放在外层,所以会比没有ORDER BY 语句的查询的运行效率较低一点。
需要注意的是:ROWNUM只能使用 < 或 <= , 而用= 、> 或 >= 都将不能返回任何数据。如果遇到要使用=、>、>=、那么只能把ROWNUM写在子查询的外面,那么就可查询出来。
如果遇到 < 或 <= 那么可以把ROWNUM放在子查询的外层,当同时存在= 、> 或 >= 可以再写一层查询,然后把where 条件放在最后一层,这样可以提高运行的效率,如图:

在这里插入图片描述2、 ROWID:行地址
ROWID行地址(物理地址),它也是一个伪列,并不存在于实际的列表中,它是唯一的标志记录。
ROWID 它可以用来删除重复数据,只留下唯一一条数据,如果当存在很多数据的时候,用ROWID就会非常的方便。如果直接写一个删除数据的语句,那么其就会把所有重复的数据全部删除,一条数据都没有,那么这样就不是我们想要的结果。ROWID它就不会把所有重复的数据删除,它会根据它的物理地址进行排序,其数据都是唯一的,排序如图:
在这里插入图片描述
它的排序都是不重复的,如果在子查询查询出最大或最小的那条数据,写条件的时候让其不等于子查询查询出来的结果,那么ROWID它删除时就会留下子查询查询出来的数据,同时也唯一的一条数据,如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值