Rownum 和 RowidOracle数据库所特有的,通过他们可以查询到指定行数范围内的数据记录。

 

以下通过例子讲解:

-- 为了方便,首先,查找dept表中的所有。

select deptno,dname,loc from scott.dept;

-- Rownum

-- 可以查询 rownum(行数) 为 1 的数据

select rownum,deptno,dname,loc

from scott.dept

where rownum = 1;

-- 如果直接查询 rownum 为 2 的数据,返回是 null

-- 因为 rownum 是临时产生的一个“伪列”

-- 是先获取到全部的数据之后,才决定如何分配 rownum

-- 需要先搞定 1,才能知道下一个是 2,即需要从1开始查起。

 

-- 查询最前面两条的记录

select rownum,deptno,dname,loc

from scott.dept

where rownum < 3;

-- 会从1开始查起,查到后接着查询2...直到不符合条件。

 

-- 下面查询结果为 null,因为1没有查,接下来的无从查起。

select rownum,deptno,dname,loc

from scott.dept

where rownum > 3;

-- 1开始查起,直到全部。

select rownum,deptno,dname,loc

from scott.dept

where rownum > 0;

-- Rowid是一串随机生成的字符串,也是 Oracle 提供的一个数列。

-- Rownum 和 Romid 区别

-- 一般情况下,每一行数据对应一个 rowid,这个值是固定而且唯一的。

-- 在这行数据存入数据库的时候,就确定的了,自动生成的。

-- 相当于我们 Java 对象在堆内存中对应有一个固定的地址值。

-- 可以使用 rowid 来查询记录,通过它可以提高我们的查询速度

-- 因为会有一张表单独保存 rowid,如果在查询的时候,

-- 需要扫描的列越少,速度就会越快,也是 oracle 查询最快的方式之一

-- rowid 在你的表发生移动时候,也会跟着一起发生改变。

-- 最大的一个作用:因为是唯一的,可以用来避免重复数据。

select rowid, deptno, dname, loc

from scott.dept

where rowid = 'AAAR3qAAEAAAACHAAC';

oracle数据库之rownum和rowid用法的更多相关文章

  1. Oracle数据库中序列(SEQUENCE)的用法详解

    Oracle数据库中序列(SEQUENCE)的用法详解   在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了 ...

  2. Oracle中的rownum 和rowid的用法和区别

    Oracle中的rownum 和rowid的用法和区别   1.rownum是伪列,是在获取查询结果集后再加上去的 (获取一条记录加一个rownum).对符合条件的结果添加一个从1开始的序列号. eg ...

  3. Oracle数据库之rownum

    1. 介绍 当我们在做查询时,经常会遇到如查询限定行数或分页查询的需求,MySQL中可以使用LIMIT子句完成,在MSSQL中可以使用TOP子句完成,那么在Oracle中,我们如何实现呢? Oracl ...

  4. oracle数据库触发器(trigger)用法总结

    from:http://blog.csdn.net/zhanzhib/article/details/48729417 触发器的意思就是当我们对数据库对象(一般是表或视图)进行insert.updat ...

  5. 关于Oracle数据库的rownum应用

    它是Oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,以此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀. 如以下语句将无法 ...

  6. java 查询oracle数据库所有表DatabaseMetaData的用法

    DatabaseMetaData的用法(转) 一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName ...

  7. Oracle中的rownum和rowid

    http://blog.csdn.net/mitedu/article/details/3584399  rownum http://blog.csdn.net/mitedu/article/deta ...

  8. oracle数据库查询语句case的用法

    实现功能: 1.先查询status=2的记录,如果查询到记录则返回第一条记录的Product_Name:2.如果查询不到status=2的记录,则判断status=1的记录是否存在,不存在则返回“请耐 ...

  9. oracle数据库中sql%notfound的用法

    SQL%NOTFOUND 是一个布尔值.与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true.否则返回fal ...

随机推荐

  1. 安装mysql中遇到的问题1

    我的debian7之前安装了mysql-server,是通过apt安装的,后来我卸载掉, 然后用whereis mysql查找, 把所有关于mysql的目录删除掉,包括带mysqld的目录及文件. 重 ...

  2. python第十四课--排序及自定义函数之自定义函数(案例四)

    整理:4中最常见的自定义函数模型1).无参无返回值2).无参有返回值3).有参无返回值4).有参有返回值 #定义无参无返回值自定义函数 def func1(): print('hello method ...

  3. AOP的核心:代理与织入

    分为两步: 1.动态生成代理类: 2.织入: 2.6 织入(Weaving) 织入是将增强添加到目标的具体连接点上的过程 . AOP 织入方式: 方式 实现 应用编译期织入 特殊的 Java 编译器. ...

  4. Golang 临时对象池 sync.Pool

    Go 1.3 的sync包中加入一个新特性:Pool.官方文档可以看这里http://golang.org/pkg/sync/#Pool 这个类设计的目的是用来保存和复用临时对象,以减少内存分配,降低 ...

  5. BZOJ4259:残缺的字符串(FFT)

    Description 很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串A和B,其中A串长度为m,B串长度为n.可当你现在再次碰到这两个串时,这两个串已经老化了,每个串都有不同 ...

  6. virtualbox+vagrant学习-3-Vagrant Share-3-SSH Sharing

    SSH Sharing vagrant share通过向vagrant share提供--SSH标志,使远程SSH访问vagrant环境变得非常容易. 如果你想让同事访问你的SSH,以便对ops问题进 ...

  7. Ubuntu14.04更换阿里云源

    步骤很简单一共三步,如下所示: 第一.备份源文件(防止万一) sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 第二.修改源文件(这里的源 ...

  8. 集合之fail-fast机制

    在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList: 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证.快速失 ...

  9. java多线程之Callable、Future和FutureTask

    Java并发编程:Callable.Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一 ...

  10. CoreText 关键性常用函数说明

    CoreText是专门进行文字绘制的函数集合 CoreText 将单个字符分为 · baseline(基线),一条假想的线,一行上的字形都以此线作为上下位置的参考,在这条线的左侧存在一个点叫做基线的原 ...