Oracle 的伪列

Posted 融英数据分析师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 的伪列相关的知识,希望对你有一定的参考价值。

Oracle的表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就像表中的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改操作。接下来学习两个伪列:ROWIDROWNUM 

ROWID(select * 查不出的列)

SELECTROWID,ENAME FROM EMP WHERE SAL>2000; 


ROWNUM(只能从1开始查询)

在查询的结果集中,ROWNUM为结果集中每一行标识一个行号,第一行返回1,第二

行返回2,以此类推。通过ROWNUM伪列可以限制查询结果集中返回的行数。

查询出员工表中前5 名员工的姓名,工作,工资。

SELECTROWNUM,ENAME,JOB,SAL FROM EMP WHERE ROWNUM<=5;

selectrownum, R. * from emp R where rownum<=5;

查询出表EMP中第 5 条到第10 条之间的记录。(将rownum作为临时表)

select* from (select rownum as num , R.* from emp R where rownum<=10)E

whereE.num>=5 and E.num<=10;

select* from (select e.*,rownum rn from (select * from emp) e

whererownum<=10) where rn>=5;

此处可用交集来计算


SELECT ROWNUM,ENAME,JOB,SAL FROM(SELECT ROWNUM,ENAME,JOB,SAL FROM EMP

 ORDER BY SAL DESC) E WHERE ROWNUM<=5;

工资排在前5的姓名,职务,工资。


SELECT * FROM (SELECT ROWNUMAS NUM,ENAME,JOB,SALFROM (SELECT ROWNUM,ENAME,JOB,SAL FROM EMP

 ORDER BY SAL DESC) E ) T

 WHERE T.NUM=5;

找出工资第五的员工的姓名,职务,工资。

ROWNUMAS NUM:作为一个列,而不是伪列

删除重名的人员信息

DELETEFROM EMP1 E WHERE E.EaMPNO>

(SELECTMIN(EMPNO) FROM EMP1 E1 WHERE E.ENAME=E1.ENAME

GROUPBY ENAME)


删除表内重复的数据

delete from bbbe where rowid <>(select max(rowid)from bbb e1

where e.a=e1.aand e.b=e1.b and e.c=e1.c);








以上是关于Oracle 的伪列的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中的伪列

Oracle中的伪列

oracle04--伪列

oracle数据库基本操作

伪表和伪列

Oracle Schema Objects——伪列ROWID Pseudocolumn(ROWNUMROWID)