数据库入门3
文章目录
事务Transaction
什么是事务
是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
简单地说:事务是将一堆SQL语句绑定在一起执行,要么都执行成功,要么都执行失败,都执行成功才算成功,否则就会恢复到执行这对SQL语言之前的状态。
事务的四个特性ACID
原子性
事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。事务中如果发生错误,会被回滚到事务开始前的状态,就像这个事务从来没执行过一样。
一致性
几个并行执行的事务,其执行结果必须与按某一顺序 串行执行的结果相一致。
隔离性
数据库允许多个并发事件对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉而导致数据的不一致。
持久性
对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。
隔离级别
读未提交
安全性最差,可能发生并发数据问题,性能最好
读已提交
oracle默认隔离级别
可重复读
MySQL默认的隔离级别,安全性最好,性能一般
串行化
表级锁,读写都加锁,效率低下,安全性高,不能并发
查询MySQL的隔离级别
MySQL默认对每条sql语句都开关事务,所以事务也是一个优化的点。
- 开启事务: start transaction;
- 结束事务:commit或 rollback;
事务处理
- 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务
- 事务处理可以用来维护事务的完整性,保证事务全部执行或者全部不执行
- 事务用来管理insert,update, delete语句,因为这些操作才会破坏数据,查询select语句不会
- MySQL默认数据库的事务是开启的,执行SQL后自动提交
- MySQL事务可以改成手动提交
commit
多条语句时,批量执行,事务提交
有了事务,多步操作形成了原子性,高并发下也不会引起事务的错乱
BEGIN;关闭事务的自动提交
COMMIT; 手动提交事务
表关联
表代表了生活中的一个主体
表关联代表了表与表之间的关系
表的四种关系
- 一对一
- 一对多
- 多对一
- 多对多 ex:老师和学生,老师和课程