数据库开发(八)DML(数据操作) 事务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhang___gang/article/details/84339664

DML:对表数据增,删,改

  • DML操作后,需要COMMIT;

INSERT:添加数据

UPDATE:更新数据,修改

  • 语法:
    UPDATE 表名 SET 列名=值,列名=值...
    WHERE 条件;   --WHERE可不写
  • 注:

    • 如果没有条件,修改所有记录

    • 条件写法同SELECT

eg1:修改每个员工的薪资,+1000

UPDATE s_emp SET salary=salary+1000;
--不提交不会做最后的修改

eg2:修改41号部门每个员工的薪资为2000

UPDATE s_emp SET salary=2000
WHERE dept_id=41;

DELETE:

  • 语法:
    DELETE FROM 表名
    WHERE 条件;   --WHERE可不写
  • 注意
    • 如果没有条件,删除表的所有数据
    • WHERE条件同SELECT
    • 如果数据行被别的表引用,则删除会失败

eg1:

INSERT INTO s_dept VALUES(51,'IT',1);

删除51号部门

DELETE FROM s_dept
WHERE id=51;

事务:Transaction(组合在一块的多个操作,要么都成功,要么都失败)

  • 了解其作用,jdbc会涉及编程
  • 是一直存在的
  • 对于增删改操作,在一个事务之内的操作,
  • commit:结束本次事务,把这个事务中所有的增删改操作提交
  • rollback:结束本次事务,把这个事务中所有的增删改操作回滚(取消)
  • 利用事务,可以把一个业务的多个操作放到一个事务中,达到要么都成功,要么都失败

事务的四个特性(ACID)

  • 原子性(Atomicity):一个事务的多个操作要么都成功要么都失败
  • 一致性(Consistency):事务前后数据的一致(如转账双方数据都改变)
  • 隔离性(Isolution);一个事务中间过程的数据,另外一个事务无法看到
  • 持久性(Durability):事务提交后的数据持久保存到数据库中,不会因为意外状况如断网断电等导致数据丢失

举例:

支付宝转账:

  • 转账给某人100元

数据库操作:

  1. 我的余额减100
  2. 你的余额加100
  • 一个业务的操作要么都成功,要么都失败

是务开始的边界:

  • 连接到数据库,一个事务就开始了(如通过SQLPlus连接上Oracle)
  • 一个事务结束,另一个事务就开始了

事务结束的边界:

  • COMMIT:
    • 事务正常结束,所有的数据提交数据库
    • 当提交时,释放锁(没释放时,一个事务正在操作,另一个事务不允许操作)
    • 在SQLPLUS中,DML操作默认需要手动提交,即COMMIT;DDL,DCL都是自动提交的
  • ROLLBACK:回滚
    • ·事务议程结束,所有的数据恢复到事务开始的时候
    • 点击右上角的X关闭时,是异常关闭, 通过exit,quit是正常关闭
    • 异常关闭,事务会回滚,正常关闭,事务会自动提交(不用COMMIT)
  • 回滚到指定位置:需要指定回滚点
    • 保存回滚点:SAVEPOINT 名字;
    • 回滚到指定回滚点:ROLLBACK TO 名字;
    • 注:回滚点之前的提交,之后的取消

编程时的一般操作:

try{
    操作1
    操作2
    操作3
    //如果都成功
    COMMIT;
}catch(Exception e) {
    rollback;
}

猜你喜欢

转载自blog.csdn.net/zhang___gang/article/details/84339664
今日推荐