Oracle知识点总结—ROWNUM与ROWID

数据伪列
用户不需要处理的列,而是由Oracle自行维护的数据列
ROWNUM
ROWID

ROWNUM:表示行号
为每一个显示的记录自动生成查询行号
select rownum,empno,job from emp;

查询前五条数据
select * from emp where rownum<=5;
查询六到十条数据
先查询前十条数据,之后再显示后五条记录,用子查询
select * from (select empno,ename,job,rownum rn from emp where rownum<=10) temp where rn >5;

分页查询
显示前五条数据
当前所在页(curPage)为1
每页显示的记录长度(lineSize)为5
第一页:
select * from (select empno,ename,job,rownum rn from emp where rownum<=5) temp where rn >0;
第二页:
select * from (select empno,ename,job,rownum rn from emp where rownum<=10) temp where rn >5;

select * from (select empno,ename,job,rownum rn from emp where rownum<=&curPage*&lineSize) temp where rn >(&curPage-1)*&lineSize;

ROWID
表示每一行数据保存的物理地址的编号
select ROWID,deptno,dname,loc from dept;
每一条记录的ROWID都不相同
ROWID的组成:AAAMfNAAEAAAAAQAAD
数据对象号 AAAMfN
相对文件号 AAE
数据块号 AAAAAQ
数据行号 AAD

请删除表中的重复记录
insert into dept(deptno,dname,loc) values(11,'ACCOUNTING','NEW YORK');
insert into dept(deptno,dname,loc) values(22,'RESEARCH','DALLAS');

首先找到重复的数据,按照部门名称及位置分组,之后统计个数,如果个数大于1,则表示重复
select dname,loc,max(rowID) from dept group by dname,loc having count(deptno)>1;

DELETE FROM dept WHERE ROWID NOT IN(SELECT MIN(ROWID) FROM dept GROUP BY dname,loc);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值