您的位置:首页 > 数据库 > Oracle

Oracle子查询及事务处理

2017-03-07 09:46 155 查看
 Oracle操作数据,使用子查询插入数据:

当时用values子句时,一次能插入一行数据,当时用子查询插入数据时,一条insert语句可以插入大量的数据,当处理迁移或者装在外部表的数据到数据库时,可以使用子查询来插入数据。

create table   wangibng  (myid  number(4),myname varchar2(50),mydeptno  number(5));

insert   into  wangbigng    (myid  ,myname ,mydeptno )   select   empno,ename,deptno  from  emp  where deptno=10;

使用子查询更新数据;

使用update更新数据时,既可以使用表达式或者数值直接修改数据,也可以使用子查询修改数据。

问题:  希望员工scott的岗位、工资、补助与smith一样?

update   emp  set  (job,sal,comm) = (select  job,sal,comm from  emp   where  ename = 'SMITH')  where  eanme ='scott';

事务:

事务用于保证数据一致性,它是由一组相关的dml语句组成,该组的dml语句【增删改语句】要么全部成功,要么全部失败。

事务和锁:

当执行事务操作时(dml语句),oracle会被作用的表上加锁,防止其他用户该表表的结构。【类似于java 的synchronized】

提交事务

当执行commit语句可以提交事务。当执行了commit语句之后,会确认事务的变化,结束事务,删除保存点,释放锁,当使用commit语句结束事务之后,其他会话将可以查到事务变化后的新数据。

回退事务:

一、savepoint   的概念和作用

保存点是一个事务中的一点,用于取消部分事务,当结束事务时,会自动的删除该事物所定义的所有保存点,当执行roolback时,通过指定保存点可以回退到指定的点。

savepoint  a2 ;

取消部分事务:rollback   to a2;

取消全部事务:  rollback

只读事务:

是只允许执行查询的操作,而不允许任何dml操作的事务,使用只读事务可以确保用户只能取得用户某时间点的数据。

设置只读事务:set   transaction   read  only;

【在system用户中设置只读事务,用scott 登录在emp表中插入数据,用system用户查看scott的emp表则插入的数据不会显示】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐