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表则插入的数据不会显示】