oracle中rowid怎么用?

Posted

tags:

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

参考技术A

ROWID是一种数据类型,它使用基于64为编码的18个字符来唯一标识一条记录物理位置的一个ID,类似于Java中一个对象的哈希码,都是为了唯一标识对应对象的物理位置,需要注意的是ROWID虽然可以在表中进行查询,但是其值并未存储在表中,所以不支持增删改操作,下面看个例子:

[html] view plain copy

    SELECT ROWNUM,ROWID,empno,ename,job FROM emp WHERE ROWNUM <= 5;  

    结果如下:


    可以看到ROWID确实由18个字符组成,组成结构如下:

    数据对象编号    文件编号    块编号    行编号    

    OOOOOO    FFF    BBBBBB    RRR    

    至于ROWID的作用,由于ROWID用来唯一标识表中数据的唯一性,所以可以利用这个特性去除重复,举个例子,首先运行下述两行代码:

    [html] view plain copy

    CREATE TABLE dept_bak AS SELECT * FROM dept;  

    INSERT INTO dept_bak SELECT * FROM dept;  

    得到一个如下的数据库表


    很明显,数据有重复的,但是ROWID肯定不会重复的,那么就可以利用这个特性去重,简单示例代码如下:

    [html] view plain copy

    DELETE FROM dept_bak WHERE ROWID NOT IN( SELECT MIN(ROWID) FROM dept_bak GROUP BY DEPTNO);  

以上是关于oracle中rowid怎么用?的主要内容,如果未能解决你的问题,请参考以下文章

informix/oracle rowid 问题

用oracle在mybatis中分页sql怎么写

Oracle数据库中rowid啥作用????!!!!!谢谢!!!!

在Oracle中有个rowid和rownum,他们是一样的吗?有啥作用?大神求解!!!

mysql中实现行号,oracle中的rowid

gp里用啥代替oracle里rownum,用啥代替rowid???