一、数据库事务四大特性ACID
- 1.原子性
- 事务包含的所有操作要么全部成功,要么全部失败回滚
- 2.一致性
- 数据库从一个一致性状态变换到另一个一致性状态。例如用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000
- 3.隔离性
- 多个并发事务之间相互隔离
- 4.持久性
- 对数据库中的数据的改变是永久性,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
二、事务的隔离性
1.脏读
1)定义:一个事务处理过程里读取了另一个未提交的事务中的数据
2.不可重复读
1)定义:对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。
3.虚读/幻读
1)定义:非独立执行时发生的一种现象,好像并没有执行该操作
注意:
设置数据库的隔离级别一定要是在开启事务之前!
隔离级别的设置只对当前链接有效
三、MYSQL四种隔离级别
① Serializable (串行化):可避免脏读、不可重复读、幻读的发生—最高级别
② Repeatable read (可重复读):可避免脏读、不可重复读的发生—默认级别
③ Read committed (读已提交):可避免脏读的发生。
④ Read uncommitted (读未提交):任何情况都无法保证—最低级别
四、ORACLE两种隔离级别
① Serializable
②Read committed ----默认级别
五、SQL的外连接和内连接
- A.外连接
1)左连接left join/left outer join
以左表为基准,将左表没有的对应项显示,右表的列为NULL
2)右连接right join/right outer join
以右表为基准,以将右表没有的对应项显示,左表的列为NULL
3)全连接 full join/full outer join
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
- B.内连接
1.包括等值连接、不等值连接和自然连接
2.内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值