一、事务
1.开启事务
事务的开启需要使用START TRANSACTION
语句
2.事务提交
当开启了事务之后,运行完一系列的语句必须要进行事务的提交才可以真正的完成数据库数据更新,需要使用COMMIT
语句
3.事务回滚
开启了事务之后,在运行一系列语句的过程中如果出现了错误,我们可以使用事务回滚,将操作的数据回到原点,需要使用ROLLBACK
语句
4.事务的正确使用
首先来看两段错误的使用方式,这里的前提是使用了第三方的工具来批量执行sql语句
START TRANSACTION;
INSERT INTO tableA VALUES(1, 'A');
INSERT INTO tableA VALUES(2, 'B');
ROLLBACK;
在这种情况下,无论事务过程中的语句是否执行正确,都会进行回滚
START TRANSACTION;
INSERT INTO tableA VALUES(1, 'A');
INSERT INTO tableA VALUES(1, 'B');
COMMIT;
再来看一下这种情况,假设这个过程中,第二条插入语句出现主键冲突,语句就中断了,COMMIT
并不会执行,但是需要注意的是第一条插入语句是成功的完成了,并且事务仍处于开启状态,那么在我们目前连接没有中断过的前提下,在接下来的其他操作过程中使用了COMMIT
,则会将第一条插入语句一并提交
- 正确的使用方式
DELIMITER //
CREATE PROCEDURE t_test()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
START TRANSACTION;
INSERT INTO tran_test VALUES('A',1);
INSERT INTO tran_test VALUES('B',2);
COMMIT;
END //
DELIMITER ;
CALL t_test()
二、备份
目前大多数的备份都是使用第三方图形界面工具来完成的,这里简单的说一下如何进行命令行来进行数据库的备份以及恢复
1.备份
- 备份指定数据库的所有表及数据
mysqldump -u root -p dataBaseName > J:/back.sql;
- 备份指定数据库的某个表及数据
mysqldump -u root -p dataBaseName tableName > J:/back.sql;
- 备份指定数据库的所有表的表结构
mysqldump -u root -p -d dataBaseName > J:/back.sql;
- 备份指定数据库的某个表的表结构
mysqldump -u root -p -d dataBaseName tableName > J:/back.sql;
2.恢复
mysql -u root -p dataBaseName < J:/back.sql;