数据库--Mysql、Oracle数据库事务及ACID

目录

一、什么是事务?

概念

生活场景

二、事务的四大特性(ACID)?

原子性(Atomic)

一致性(Consistence)

隔离性(Isolation)

持久性(Durability)

三、事务的分类?

隐式事务

显式事务


一、什么是事务?

概念

事务是指单个逻辑工作单元执行的一系列操作,用于保证数据的安全有效.要么完全地执行,要么完全地不执行;

SQL语句就是自身的一个事务。SQL语句有:DML/DDL/DCL/TCL

生活场景

我转账给别人,要么我转账成功,别人收款成功。要么我转账失败,别人收款失败。

 

二、事务的四大特性(ACID)?

原子性(Atomic)

概念:事务中所有数据的修改,要么全部执行,要么全部不执行;

理解:不可再分的。

 

一致性(Consistence)

概念:事务完成时,要使所有数据都保持一致的状态。

理解:不管谁操作了数据库,数据在数据库中的状态是一致的,大家看到的结果是一致的。

 

隔离性(Isolation)

概念:事务应该在另一个事务对数据的修改前或修改后进行访问。

理解:A操作的时候,不影响B,A在commit之前,可以看到修改后的结果,B看不到。

比如我要向数据库中添加一条数据,那么你想要查询数据中的数据,就应该在我添加这条记录之前或者添加之后,再查询数据库的数据。

要是你在我添加记录进行时去查询数据,在我没有commit之前,我是可以看到数据库中已经有我添加的记录了,但是你是看不到的。这个就体现了事务的隔离性。

也就是说只有在我commit之后,添加的记录才会被持久化到数据库当中,在commit之前,是可以通 过rollback进行撤销添加的。

 

持久性(Durability)

事务一旦提交,也就是commit之后,对数据库的修改是持久有效的,即使发生系统故障,也不应该丢失。

 

三、事务的分类?

隐式事务

理解:数据库(SQL/ORACLE)自动帮我们处理事务(自动提交事务)。

SET AUTO COMMIT ON (只针对一个连接);

以下情况自动提交事务:

正常执行完成的DDL语句:create、alter、drop、delete...

正常执行完成的DCL语句:grant、invoke...

正常退出的客户端工具:SQL Plus、SQL Developer、PL/SQL Developer

显式事务

理解:自己来处理事务(手动提交事务)

关键字

BEGIN TRANSACTION 表示一个事务要开始了。

COMMIT TRANSACTION 表示从begin(事务开始)后的所有修改都被持久化到数据库中。

ROLLBACK TRANSACTION 表示从begin(事务开始)后的所有修改都会被还原。

SAVEPOINT TRANSACTION SAVE_NAME 表示在事务中设置保存点SAVE_NAME(保存点名称)

ROLLBACK TRANSACTION SAVE_NAME 表示可以rollback回滚到SAVE_NAME(保存点名称)

 

PS:

显式事务是需要我们显式(手动)调用TCL(事务控制语言)语句;

当我们commit之后,对数据的修改才真正的持久化到数据库中,在commit之前,可以通过rollback撤销修改的。

 

SQL语句之DDL、DML、DCL、TCL区别?点击了解~

 

你可能感兴趣的:(04丨数据库,数据库事务,ACID)