事务
什么是事务
-
事务(TRANSACTLON)是作为单个逻辑工作单元执行的一系列操作
-
多个操作作为一个整体向系统提交,要么都执行,要么都不执行
-
事务是一个不可分割的工作逻辑单元
-
在保证当前一个逻辑有多个增删改操作时候的数据的一致性
- 举个例子:转账的过程就是一个整体
- 它需要两条UPDATE语句来完成,这两条语句是一个整体,如果其中任何一条出现错误,则将整个转账业务也应取消,两个账户中的余额应恢复到原来的数据,从而确保转账前转账后的余额不变,即都是1001元
-
怎么能把多个增删改查绑定在一起需要执行的都执行,要不执行的都不执行,这就叫事务
-
将一组SQL语句,将同一批次内去执行如果一个SQL语句出错,那这一组SQL都将被取消执行
事务的四大特征
事务必须具备以下四个属性,简称acid属性
- 原子性(Atomiclty)
事务是一个完整的操作,事务的各部操作是不可分的(原子的),要么都执行,要么都不执行 - 一致性(Consistency)
当前事务完成时,数据必须处于一致状态
-
隔离性(IsoIation)
并发事务之间彼此隔离、独立,它不应该以任何方式依赖于影响其他事物 -
持久性(Durability)
事务完成后,它对数据库的修改被永久保存
如何创建事务
MySQL中支持事务的存储引擎有lnnoDB和BDB
-
语法:
-
开始事务
BEGIN; 或 START TRANSACTION;
-
转账:100
UPDATE stu SET tuition=tuition-100 WHERE sid=2; UPDATE stu SET tuition=tuition+100 WHERE sid=1;
-
提交事务:
COMMIT;
-
回滚事务(撤销)事务 退回到执行之前的状态
ROLLBACK;
关闭MySQL的自动提交 my.ini 配置文件 0:表示关闭 1:表示开启
SET autocommit=0
数据库备份
数据库备份:
- cmd中运行,不需要登录数据库,不能有分号,生成的SQL文件中不存在创建数据库的语句
- mysqldump -u用户名 -pMiami 数据库名>脚本文件路径
恢复:
- 方式一:cmd中运行,不需要登录,不能有分号
mysql -u用户名 -p密码 数据库名<SQL文件路径
例图: - 方式二:登录数据库 mysql -u用户名 -p密码
切换数据库 use 数据名
恢复数据 source sql文件路径 - DELETE FROM student;删除学生表后恢复
#创建数据库
CREATE DATABASE t128_test1;
#删除student表
DELETE FROM student;
可以通过事务回滚恢复student表
---------------------------------------------------------------------------
#自动提交关闭
SET autocommit=0;
#开启事务
START TRANSACTION;
#删除student表
TRUNCATE TABLE student;
更新中~
未完待续~
个人笔记,如有错误还请指正。