网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Linux构建网站案例.
.如何使用Logmnr方法分析数据库日.
.Linux环境下oracle9i的Dataguard.
.对于数据库系统中使用临时表的思.
.*[原创]*安装文档ORACLE9i for s.
.在hp-ux10.20系统下配置oracle8..
.巧用Rman 来管理裸设备上的数据库.
.如何才能使用查询改写提高查询性.
.教你修复被优化大师Kiss掉的Orac.
.W2k Server下Oracle 9iAS安装报告.
.Oracle体系框架及SQL语句性能完全.
.ExactPapers Oracle 1Z0-132 200.
.VC下利用Pro*C开发Oracle接口.
.数据库知识:Oracle中传输表空间.
.一个优秀的分析trace文件的脚本.
.移动数据库和J2ME工具构建应用程.
.如何简单测试Rman的备份恢复功能?.
.Vi 使用说明.
.如何只列子目录?.
.OCIEnvCreate()多线程初始化的模.

ORACLE数据库中的ROWID

发表日期:2008-2-9



  我们可能对Oracle的rowid的使用并不生疏,不过,假如仔细分析一下,发现其还是有些知识点。
  
  1、rowid是一个伪列,是用来确保表中行的唯一性,它并不能指示出行的物理位置,但可以用来定位行。 2、rowid是存储在索引中的一组既定的值(当行确定后)。我们可以像表中普通的列一样将它选出来。
  
  3、利用rowid是访问表中一行的最快方式。
  
  4、rowid需要10个字节来存储,显示为18位的字符串。
  
  rowid的组成结构为:
  
  data object number(6位字符串)+relative file number(3位字符串)+block number(6位字符串)+row number(3位字符串),如:AAAADeAABAAAAZSAAA
  
  5、我们可以借助oracle提供的包dbms_rowid,来对rowid进行解析从而获取关于行的相关信息:
  
  bossdb-SQL>select
  2 rowid,
  3 dbms_rowid.rowid_object(rowid) obj_id,
  4 dbms_rowid.rowid_relative_fno(rowid) df#,
  5 dbms_rowid.rowid_block_number(rowid) blknum,
  6 dbms_rowid.rowid_row_number(rowid) rowno
  7 from p_test where rownum<5;
  ROWID OBJ_ID DF# BLKNUM ROWNO
  ------------------ ---------- ---------- ---------- ----------
  AAAQ+tAANAAAC6SAAA 69549 13 11922 0 AAAQ+tAANAAAC6SAAB 69549 13 11922 1 AAAQ+tAANAAAC6SAAC 69549 13 11922 2 AAAQ+tAANAAAC6SAAD 69549 13 11922 3
  
  我们可以看到,通过rowid_row_number得到的行号是从0开始的,这是和rownum伪列的一个不同之处。我猜测rowid_row_number在求行号的时候是计算首行的偏移量。
  
  一般来说,当表中的行确定后,rowid就不会发生变化。
  
  但当如下情况发生时,rowid将发生改变:
  
  1、对一个表做表空间的移动后
  
  2、对一个表进行了EXP/IMP后
上一篇:SQL语句的基本语法一 人气:1187
下一篇:Oracle Spatial自定义临时表实现及应用 人气:470
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐