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

 

以下通过例子讲解:

-- 为了方便,首先,查找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. vim高级操作命令

    1.首先在命令模式下,输入“:set nu”显示行号:通过行号确定你要删除的行:命令输入“:32,65d”,回车键,32-65行就被删除了,很快捷吧如果无意中删除错了,可以使用‘u’键恢复(命令模式下 ...

  2. Kubernetes中的资源调度与资源管理

    一.scheduling:把pod放到node上 1.最小调度单元:pod 2.1.8的版本后,最大支持5000个node 3.scheduling由两个部分组成: 3.1 Predicates:过滤 ...

  3. vue2.* 事件结合双向数据绑定、模块化以及封装Storage实现todolist 待办事项 已经完成 和进行中持久化 06

    ceshi.vue <template> <div id="app"> <input type='text' v-model='todo' @keyd ...

  4. docker 不同版本 添加--insecure-registry

    docker  17.0.3 vim /lib/systemd/system/docker.service 然后重启 systemctl  daemon-reload , systemctl rest ...

  5. virtualbox+vagrant学习-2(command cli)-20-vagrant suspend命令

    Suspend 格式: vagrant suspend [options] [name|id] 这个suspend命令将挂起vagrant正在管理的客户机,而不是完全关闭或摧毁它. 挂起有效地保存了计 ...

  6. 1349: Taking Pebbles (博弈 打表找规律)

    1349: Taking Pebbles Submit Page    Summary    Time Limit: 1 Sec     Memory Limit: 128 Mb     Submit ...

  7. DL4NLP —— 序列标注:BiLSTM-CRF模型做基于字的中文命名实体识别

    三个月之前 NLP 课程结课,我们做的是命名实体识别的实验.在MSRA的简体中文NER语料(我是从这里下载的,非官方出品,可能不是SIGHAN 2006 Bakeoff-3评测所使用的原版语料)上训练 ...

  8. [图解tensorflow源码] 线程池模块分析 (CPU thread pool device)

  9. Html+Css实现梯形选项卡

    1,先看一下效果图 2,梯形通过定位和设置Border来实现的,平行四边形通过旋转来实现的. 3,代码如下 (1)HTML代码 <html lang="en" xmlns=& ...

  10. 什么是控制反转(IOC)?什么是依赖注入?

    控制反转是应用于软件工程领域中的,在运行时被装配器对象来绑定耦合对象的一种编程技巧,对象之间耦合关系在编译时通常是未知的.在传统编程方式中,业务逻辑的流程是应用程序中早已被设定好关联关系的对象来决定的 ...