"oracle"中rowid怎么用?

 我来答
奔驰M888
2018-01-02 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1846
采纳率:0%
帮助的人:2695万
展开全部
rowid 是查找一个表中记录的最快方式,比任何索引都要快。
下面第一列就是rowid,至于为什么他是确定一条记录的最快方式,你可以查查他是由哪几部分组成的。

[SCOTT@orcl] SQL>select rowid,t.empno,t.ename from emp t;
ROWID EMPNO ENAME
------------------ ---------- ----------
AAAMgzAAEAAAAAgAAA 7369 SMITH
AAAMgzAAEAAAAAgAAB 7499 ALLEN
AAAMgzAAEAAAAAgAAC 7521 WARD
AAAMgzAAEAAAAAgAAD 7566 JONES
AAAMgzAAEAAAAAgAAE 7654 MARTIN
AAAMgzAAEAAAAAgAAF 7698 BLAKE
AAAMgzAAEAAAAAgAAG 7782 CLARK
AAAMgzAAEAAAAAgAAH 7788 SCOTT
AAAMgzAAEAAAAAgAAI 7839 KING
AAAMgzAAEAAAAAgAAJ 7844 TURNER
AAAMgzAAEAAAAAgAAK 7876 ADAMS
AAAMgzAAEAAAAAgAAL 7900 JAMES
AAAMgzAAEAAAAAgAAM 7902 FORD
AAAMgzAAEAAAAAgAAN 7934 MILLER

--你可以查询
[SCOTT@orcl] SQL>select empno,ename,job from emp where rowid = 'AAAMgzAAEAAAAAgAAN';

EMPNO ENAME JOB
---------- ---------- ---------
7934 MILLER CLERK
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
启帆信息
2024-11-19 广告
启帆信息是英伟达中国区代理商,原厂授权代理,提供全面的软件技术解决方案以及NVIDIA以太网产品、交换机等产品,欢迎前来咨询!... 点击进入详情页
本回答由启帆信息提供
语文知识拓展
2018-05-28 · TA获得超过263个赞
知道答主
回答量:4
采纳率:100%
帮助的人:996
展开全部

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);  

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式