Oracle-增、删、改和事务

Oracle-增、删、改和事务

增删改数据

1)增

A 普通的插入数据是遵循SQL99语法的。
例如:
向emp表中插入一条记录
a, insert into emp values(1111,’JACK’,’IT’,7788,sysdate,1000,100,40); //按表默认结构顺序
b, insert into emp(ENAME,EMPNO,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(‘MARRY’,2222,’IT’,7788,sysdate,1000,100,40); //自定顺序进行插入
c, insert into emp values(3333,’SISI’,’IT’,7788,sysdate,1000,NULL,40); //向emp表中插入NULL值, 显示插入; 当然如果我们在插入时没查对应字段,默认就为null值呗。
NT:前提是所插入的字段允许插入NULL值

B 批量插入
例如:
将xxx_emp表中所有20号部门的员工,复制到emp表中,批量插入,insert into 表名 select …语法

insert into emp
select * 
from xxx_emp
where deptno=20;

NT:在插入是我们当然可以指定插入的字段

C:在sqlplus工具下,动态插入
动态插入依赖于“&”, &可以运用在任何一个DML语句中。并且应注意,&是sqlplus工具提供的占位符,如果是字符串或日期型要加”符,数值型无需加”符

例如:
a, insert into emp values(&empno,’&ename’,’&job’,&mgr,&hiredate,&sal,&comm,&xxxxxxxx);
b, select * from &table;
c, select empno,ename,&colname from emp;
d, select * from emp where sal > &money;
e, select deptno,avg(sal)
from emp
group by &deptno
having avg(sal) > &money;

2)删
删除数据并没有什么特别。
例如:
a, delete from emp; //删除emp表中的所有记录
b, 删除工资比所有部门平均工资都低的员工。 -> 这是一个条件未知的事物,优先考虑子查询

    delete 
    from emp 
    where sal < all(
        select avg(sal) 
         from emp 
         group by deptno
      ); 

c, delete from emp where comm is null; //删除无佣金的员工

3)改
更改数据并没什么特别。
例如:
a, 将’SMITH’的工资增加20%
update emp set sal=sal*1.2 where ename = upper(‘smith’);

b, 将’SMITH’的工资设置为20号部门的平均工资,这是一个条件未知的事物,优先考虑子查询

     update emp 
     set sal = (
        select avg(sal) 
        from emp 
        where deptno=20 
     );

事务

回顾

1)jdbc编程中,如何使用事务?
connection.setAutoCommit(false);
pstmt.executeUpdate(); //preparestatement
connection.commit();
connection.rollback();

2)hibernate编程中,如何使用事务?
transaction.begin();
session.save(new User());
transaction.commit();
transaction.rollback();

3)spring编程中,如何使用事务?
spring可以分为二种

编程式事务,藕合
声明式事务,解藕,提倡

4)在MySQL中事务的开始是以 start transaction 为开始的。

Oracle事务

事务开始: 在Oracle中事务的开始是以第一条DML操作做为事务开始。(CRUD)

事务提交:
(1)显示提交:commit
(2)隐藏提交:DDL/DCL/exit(sqlplus工具)
提交的什么地方呢? -> 提交是的从事务开始到事务提交中间的内容,提交到ORCL数据库中的DBF二进制文件

事务回滚:
(1)显示回滚:rollback
(2)隐藏回滚:关闭窗口(sqlplus工具),死机,掉电
注意:回滚到事务开始的地方

回滚点的回顾:
回滚点是在操作之间设置的一个标志位,用于将来回滚之用,如果没有设置回滚点的话,Oracle必须回滚到事务开始的地方,其间做的一个正确的操作也将撤销。
设置回滚点: savepoint a;
回滚到回滚点: rollback to savepoint a;
Oracle事务回滚实现依赖的机制是实例池

Oracle事务的隔离级别

Oracle支持:read committed 和 serializable。 默认为read committed

Oracle中设置事务隔离级别为serializable
set transaction isolation level serializable;

本文摘抄自传智博客笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值