oracle 事务 数据伪列

在用户进行数据更新操作(DML)事务一定会起作用。

事务的出现会保证数据的完整性、一致性。在整个事务的处理过程之中主要使用两个操作命令:

· 事务的提交(COMMIT):是真正的向数据库之中发出更新指令;
· 事务的回滚(ROLLBACK):回滚到最初的状态

一但用户发出了提交事务(commit)指令,那么所有的数据将被真实性的执行了更新操作。此时将无法使用 rollback
进行回滚。

在 Oracle 之中,每一个连接到数据库上的用户,都使用一个 session 的概念表示。每一个 Session 都拥有各自的事务
处理,这个也就是事务的隔离性

那么如果说此时,两个 session 更新同一条数据呢?
范例:第一个 session 执行如下语句
UPDATE myemp SET sal=9000 WHERE empno=7499 ;
第一个 session 执行此语句的时候发现可以正常的提示完成,同时,此时并没有进行事务的提交或者是回滚。那么另
外一个 session 也发出了一条更新 7499 雇员的操作。
范例:第二个 session 执行如下语句
UPDATE myemp SET sal=9999 WHERE empno=7499 ;
发现此时执行之后,界面进入到了一个等待的状态。

行号:ROWNUM

在进行数据的显示时,用户可以通过 ROWNUM 这个伪列,动态的生成行的编号。

在 Oracle 里面 ROWNUM 主要有可以完成两个任务:
· 取得第一行数据;
· 取得前 N 行数据。

SELECT ROWNUM,empno,ename,job,hiredate FROM emp
WHERE deptno=10 AND ROWNUM=1 ;

SELECT ROWNUM,empno,ename,job,hiredate FROM emp
WHERE ROWNUM<=10 ;
范例:数据的分页显示格式
SELECT * FROM (
SELECT 列 [别名] , 列 [别名] , ... , ROWNUM rn
FROM 表名称 [别名] , ...
WHERE ROWNUM<=currentPage*lineSize) temp
WHERE temp.rn>(currentPage - 1) * lineSize ;

行 ID:ROWID

现在每一行的记录都发现有自己的数据列,而除了这些数据列之外,还存在有每一行数据的唯一的物理地址,而这
个物理地址就只能够通过 ROWID 取得。

那么每一个 ROWID 数据都是包含有存储数据的,以:“AAAR3qAAEAAAACHAAC”为例做一个简单解释:
· “AAAR3q”:数据的对象编号;
· “AAE”:数据保存的相对文件编号;
· “AAAACH”:数据保存的块号;
· “AAC”:保存的数据行号。
数据库之中的所有数据都是在磁盘之中,保存,所以来讲,根据不同的数据会分配不同的空间,而 ROWID 就可以清
楚的记录这些空间的信息。

原文地址:https://www.cnblogs.com/xianting/p/10594181.html

时间: 2024-10-12 12:14:32

oracle 事务 数据伪列的相关文章

Oracle数据更新、事务处理、数据伪列

一.数据的更新操作 DML操作语法之中,除了查询之外还有数据的库的更新操作,数据的更新操作主要指的是:增加.修改.删除数据,但是考虑到emp表以后还要继续使用,所以下面先将emp表复制一份,输入如下指令: CREATE TABLE myemp AS SELECT * FROM emp; 这种语法是Oracle中支持的操作,其他数据库不一样. 1.数据增加 如果现在要想实现数据的增加操作,则可以使用如下的语法完成: INSERT INTO 表名称 [(字段1,字段2,-)] VALUES(值1,值

Oracle Schema Objects——伪列ROWID Pseudocolumn(ROWNUM、ROWID)

Oracle Schema Objects Oracle Schema Objects——Tables——Oracle Data Types Oracle伪列 在Oracle数据库之中为了实现完整的关系数据库的功能,专门为用户提供了许多的伪列. “NEXTVAL”和“CURRVAL”就是两个默认提供的操作伪列Oracle Schema Objects——Sequences(伪列:nextval,currval) SYSDATE与SYSTIMESTAMP也属于伪列SQL Fundamentals

Oracle中的伪列

分页查询中,需要用到伪列rownum,代码如下: select * from (select rownum rn, name from cost where rownum <= 6) where rn >3; 可是第一次用rownum,第二次用rn,位置不能变,否则出错,第一次的rownum是oracle中的一个虚拟列,rn是给这个rownum起的别名,也就是在子查询中的别名要在外查询中调用. 如果先按工资排序,再取出6到10号,可以写成: select * from (select rown

Oracle事务和常用数据对象

防伪码:一寸光阴一寸金 前言:本次内容的相关知识点我们在学习sqlserver2008R2的时候介绍过一些,包括:事务.索引.视图等.那么今天我们学习在oracle上实现这些重要的内容,以实现数据库的优化. 一.事务 1.简介 事务是数据处理的核心,是业务上的一个逻辑单元,它能够保证其中对数据所有的操作,要么全部成功,要么全部失败.DBMS通过事务的管理来协调用户的并发行为,减少用户访问资源的冲突. 1)显示提交:当事务遇到COMMIT指令时,将结束事务并永久保存所有的更改的数据. 2)显示回滚

Oracle伪列(ROWNUM)的使用

先看一个题:查询emp表的信息,显示前5行数据,这时候我们就需要使用伪列(rownum)的概念. rownum在数据表并不是一个真实的列,其实每一行应该都有一个行号,这个伪列就是用来记录这个行号的,这个列可以进行一些操作,比如取等于和小于操作,不能取大于操作. *****查询emp表的信息,显示前5行数据***** SELECT * FROM emp WHERE rownum <= 5 ; 如果我们要查询第5-10行数据,这时候该怎么办?就需要使用到子查询. SELECT * FROM ( SE

Oracle分页查询=======之伪列的使用

========伪列========== 在Oracle数据库中,伪列不存在表中,但是可以从表中查询到 例如:SELECT ROWID 伪列,tname 教师姓名 FROM teacher; =========列号rownum========== 查询rownum返回表中数据的行号; 例如:SELECT ROWNUM 列号,tname 教师,sal 薪资 FROM teacher; 其中rownum只能在条件中做=1或者小于 的操作 例如:SELECT tname 教师名,sal 薪资 FROM

oracle 之 伪列 rownum 和 rowid的用法与区别

rownum的用法 select  rownum,empno,ename,job from emp where rownum<6 可以得到小于6的值数据 select rownum,empno,ename,job from emp where rownum>6 and rownum<10 得不到数据  原因:oracle 中首先会产生编号为1的数据,也就是不满足条件,那么后面的同样会继续产生第二条数据同时也是编号为1,所以最后得不到数据 解决方案:可以将select rownum,emp

Oracle(零)--&gt; 伪列和分组聚合(Oracle 开篇,比较初级啦~)

   写在开篇~    不知不觉已然到了开学的时候,毕竟这个大三连暑假还不知道是什么就上岗了,看着周围同学秀的简直飞起 =.= 扯淡扯多了,再扯一句..大三的时候学的 Oracle ,但是现在一想竟然不觉得有何内容,而且触发器,存储过程老师也没有教过,自己也没有看过,实在...毕竟华为工程师说的那句话还是依稀在眼前..不管怎么样,先搞明白是何物,以后才在项目中知道该如何去使用.本流程基本按学习过程中 PPT 来走的,而再往前的东西概念太多,大家又不是很喜欢字,都爱看图嘛~视频就算了,太刺激了都受

Oracle 伪列

ROWNUM ROWNUM:表示行号,实际上此是一个列,但是这个列是一个伪列,此列可以在每张表中出现. 范例:在查询雇员表上,加入 ROWNUM SELECT ROWNUM,empno,ename,job,sal,hiredate FROM emp ; 从运行上看,ROWNUM 本身采用自动编号的形式出现. 假设只想显示前 5 条记录.条件中:ROWNUM<=5 SELECT ROWNUM,empno,ename,job,sal,hiredate FROM emp WHERE ROWNUM<=