日期:2014-05-16 浏览次数:20447 次
[ 概要 ]
刚刚接触oracle的同学可能常常会被rowid和rownum这两个词弄混, 弄清楚这两个家伙对于我们写sql会有很大的帮助, 下面偶就抛砖引玉, 简单地谈谈他们之间的区别吧.
[ 比较 ]
rowid和rownum都是oracle中的伪列, 但他们还是存在本质区别:
rowid: 是物理地址, 用于定位数据表中数据的位置, 它是唯一的且不会改变.
rownum: 是根据查询的结果集给每行分配的一个逻辑编号, 查询结果不同, rownum自然不同.
对于同一条记录, 查询条件不同, rownum会不同, 但是rowid将不变.
示例: 查询公司所有的员工
select rowid, rownum, empno, ename from emp;
示例: 查询公司员工姓名包含'S'
select rowid, rownum, empno, ename from emp where ename like '%S%';