Oracle PL/SQL开发基础(第八弹:ROWID伪列)
2017-04-12 23:04
585 查看
ROWID是一种数据类型,它使用基于64位编码的18个字符来唯一标识一条记录的物理位置的一个ID。
默认情况下,索引会按照ROWID的顺序显示,因此当对两条完全相同的记录进行排序时,结果会按照ROWID的顺序来进行排序。
ROWID虽然可以从表中进行查询,但是其值并未存储在表中,因此不支持插入、更新和删除。
可以使用ROWIDTOCHAR转换为字符串进行显示:
ROWID由18个基于BASE64编码的字符串组成,其格式为:
在编写查询语句时,使用ROWID可以完成很多事情,比如在数据更新方面。
在PL/SQL开发工具或Toad开发工具中,如果直接写一行单表查询的语句,在Grid中是不允许对查询结果进行编辑的,如果在查询中包含ROWID,则可以在Grid中编辑数据。如:
ROWID的另一个重要的作用是删除完全重复的两条记录。
在没有主键的表中,可能存在两条完全重复的记录,这时候想要删除其中一条时,就可以使根据ROWID来删除,因为每行的ROWID都是不同的。
如:
还可以用ROWID去除表中重复数据,比如想要删除表中empno重复的数据,可以:
默认情况下,索引会按照ROWID的顺序显示,因此当对两条完全相同的记录进行排序时,结果会按照ROWID的顺序来进行排序。
ROWID虽然可以从表中进行查询,但是其值并未存储在表中,因此不支持插入、更新和删除。
可以使用ROWIDTOCHAR转换为字符串进行显示:
SELECT SUBSTR (ROWIDTOCHAR (ROWID), 0, 6) 数据对象编号, SUBSTR (ROWIDTOCHAR (ROWID), 7, 3) 文件编号, SUBSTR (ROWIDTOCHAR (ROWID), 10, 6) 文件编号, SUBSTR (ROWIDTOCHAR (ROWID), 16, 3) 文件编号 FROM emp WHERE ROWNUM <= 5;
ROWID由18个基于BASE64编码的字符串组成,其格式为:
数据对象编号 | 文件编号 | 块编号 | 行编号 |
---|---|---|---|
OOOOOO | FFF | BBBBBB | RRR |
在PL/SQL开发工具或Toad开发工具中,如果直接写一行单表查询的语句,在Grid中是不允许对查询结果进行编辑的,如果在查询中包含ROWID,则可以在Grid中编辑数据。如:
SELECT ROWNUM, x.* FROM emp x
ROWID的另一个重要的作用是删除完全重复的两条记录。
在没有主键的表中,可能存在两条完全重复的记录,这时候想要删除其中一条时,就可以使根据ROWID来删除,因为每行的ROWID都是不同的。
如:
DELETE FROM emp WHERE ROWID = '...';
还可以用ROWID去除表中重复数据,比如想要删除表中empno重复的数据,可以:
DELETE FROM emp_rowid WHERE ROWID NOT IN (SELECT MIN (ROWID) FROM emp_rowid GROUP BY empno);
相关文章推荐
- Oracle PL/SQL开发基础(第十弹:子查询)
- Oracle PL/SQL开发基础(第十二弹:插入、更新和删除)
- Oracle PL/SQL开发基础(第二十八弹:使用锁定)
- Oracle PL/SQL开发基础(第一弹:创建表和创建约束)
- Oracle PL/SQL开发基础(第三弹:修改表)
- Oracle PL/SQL开发基础(第九弹:多表连接查询)
- Oracle PL/SQL开发基础(第三十四弹:RAISE_APPLICATION_ERROR)
- Oracle PL/SQL开发基础(第十一弹:表集合操作)
- Oracle PL/SQL开发基础(第二弹:使用数据字典视图查看表约束)
- Oracle PL/SQL开发基础(第二十五弹:操纵游标数据)
- Oracle PL/SQL开发基础(第四弹:索引)
- Oracle PL/SQL开发基础(第十七弹:集合类型)
- Oracle PL/SQL开发基础(第十四弹:序列)
- Oracle PL/SQL开发基础(第二十二弹:类型转换函数)
- Oracle PL/SQL开发基础(第三十三弹:EXCEPTION_INIT)
- Oracle PL/SQL开发基础(第三十六弹:异常处理的一些经验)
- Oracle PL/SQL开发基础(第三十二弹:SQLCODE和SQLERRM)
- Oracle PL/SQL开发基础(第二十九弹:异常处理简介)
- Oracle PL/SQL开发基础(第二十六弹:游标变量)
- Oracle PL/SQL开发基础(第五弹:视图)