了解数据库的基础概念,能手撕 SQL语句,特别是联表查询
数据库事务及其特性
事务(transaction)是指构成单一逻辑工作单元的操作集合,并且所有操作要么全部执行成功,否则全部失败回滚。
事务具有四个特性:原子性,一致性,隔离性和持久性。
特性(ACID):
-
原子性(Atomicity):事务是不可分割的操作单元,事务的所有操作要么全部提交成功,要么全部失败回滚(用回滚日志实现,反向执行日志中的操作);
-
一致性(Consistency):事务的执行必须使数据库保持一致性状态;在一致性状态下,所有事务对一个数据的读取结果都是相同的;
-
隔离性(Isolation):一个事务所做的修改在最终提交以前,对其它事务是不可见的(并发执行的事务之间不能相互影响);
-
持久性(Durability):一旦事务提交成功,对数据的修改是永久性的
数据库的隔离级别
隔离级别
-
未提交读(Read Uncommited):在一个事务提交之前,它的执行结果对其它事务也是可见的,会导致脏读、不可重复读、幻读;
-
提交读(Read Commited):一个事务只能看见已经提交的事务所作的修改,可避免脏读问题;
-
可重复读(Repeatable Read):可以确保同一个事务在多次读取同样的数据时得到相同的结果(MySQL的默认隔离级别),可避免不可重复读;
-
可串行化(Serializable):强制事务串行执行,使之不可能相互冲突,从而解决幻读问题。可能导致大量的超时现象和锁竞争,实际很少使用。
理解脏读、不可重复读、幻读
学习资料:
https://www.cnblogs.com/yubaolee/p/10398633.html
数据库的三范式
第一范式:要求有主键,并且要求每一个字段原子性不可再分;
第二范式:要求所有非主键字段完全依赖主键,不能产生部分依赖;
第三范式:所有非主键字段和主键字段之间不能产生传递依赖。
剩余内容,请通过下方获取方式购买后跳转阅读~
获取方式
本专栏内容为付费内容,你可以按照实际需求下单购买,谢谢你的支持~