Oracle 伪列 rownum & rowid

伪列
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
   )

发布了189 篇原创文章 · 获赞 11 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_29393273/article/details/97300101