用户不需要处理的列,而是由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);