事务
- 事务就是一组原子性的操作,这些操作要么全部发生,要么全部不发生
事务的四种特性
- 原子性:指事务不可分割,要么全部执行,要么全部不执行
- 一致性:指事务吧数据库从一种一致性转化成另一种一致性状态,开始前后数据库的完整性约束没有被破坏
- 隔离性:要求每个读写事务相互之间是分开的,在事务提交前对其他事务是不可见的
- 持久性:指的是事务一旦提交,其结果就是永久性,即使宕机也能恢复
事务的四种隔离级别
- read uncommitted 读未提交
- read committed 读已提交
- repeatable read 可重复读
- serializable 序列化
隔离级别依次提高,分别解决脏读,不可重复读和幻读
- 脏读:事务a读到事务b更新到的数据,然后事务b回滚,那么a读到的就是脏数据
- 不可重复读:事务a多次读到同一数据,事务b在此过程中,对数据进行了更新并提交,导致事务a多次读到同一个数据时,结果不一致
- 幻读:和不可重复读很像,幻读侧重于增删,不可重复读侧重于修改,解决不可重复读只需锁住满足条件的行,解决幻读需要锁表
三大范式
- 一范式:每列的原子性,不可再分
- 二范式:一张表只做一件事,除主键以外的其他列都依赖于主键
- 三范式:不存在传递性依赖,没列不依赖除主键以外的其他列
mysql的存储引擎
- myisam:相对简单在效率上优于innodb,读多写少,原子性要求低选
- innodb :适合读少,写多,尤其高并发场景
主键
- 存储数据对象的唯一和完整标识的数据列或属性的组合
外键
- 在一个表中存在另一个表的主键,称为此表的外键
超键
- 在关系中能唯一标识元组的属性集称为超键,包含候选键和主键
候选键
- 是最小的超键,即没有冗余元素的超键
视图
- 是一种虚拟的表,具有物理表相同的功能,没有物理存储
- 使用场景:可以从多个表中提取我们需要的东西