伪列
1.rownum伪列 行号
在进行查询的时候,默认情况下,只是显示了
数据表结构中的内容,可以利用rownum针对显示的数据进行一个自动的行号编号;
这个编号不是固定的,是动态生成的;
在Oracle中RowNum可以做两件事情:
1.取出第一条记录;
select * from emp where rownum=1;
2.取出前N行记录;(分页)
--1.查询前10条数据;
--2.将前十行数据当作临时表取出6-10行
select * from(
select rownum rn,e.empno,e.ename from emp e where rownum<=10)tmp where tmp.rn>5
cureentPage=2;当前页
pageSize=5;每页条数
start=(cureentPage-1)*pageSize;开始的行
end=cureentPage*pageSize;
语法结果:
SELECT ROWNUM rn,列名1,列名2,... FROM
(SELECT ROWNUM,列名1,列名2,... FROM e.where rownum<=(cureentPage*pageSize)) tmp
WHERE tmp.rn>(cureentPage-1)*pageSize
2.rowid伪列(存储有关)
在进行表中数据保存的时候,除了用户可以见到的数据列之外,
所以的表中的数据的行都会有一个唯一的一块物理地址编号,
这种编号可以通过rowid查找到;
select rowid,e.* from emp e;
AAAR6E AAH AAAACb AAA
数据的对象编号:AAAR6E
数据保存文件编号:AAH
数据保存的块号:AAAACb
数据的保存行号:AAA
任何情况下,都可以通过rowid确定唯一的一条;
---删除所有重复记录,且只保留最早增加的一条记录
delete From dept where rowid not in(
select min(Rowid)from dept group by deptno,dname,loc
)