MySQL-数据库事务、内连、外连

一、事务

事务就是一组DML(数据操作)语句,这些语句在逻辑上存在相关性,要么全部执行成功,要么全部失败,是一个整体。

1、事务的基本操作:

  • 开始一个事务:start transaction

  • 创建一个保存点:savepoint 保存点名;

  • 回到保存点:rollback to 保存点名。

2、事务操作注意事项:

  • 没有设置保存点,也可以回滚。只能回滚到事务的开始,直接使用rollback(前提是事务还没有提交)。

  • 事务提交(commit)后不可以回滚

  • InnoDB支持事务,而MyISAM不支持事务

3、无隔离会产生以下问题:

  • 更新丢失:两个事务同时修改一个数据,一个事务的更新覆盖了另外一个事务的更新结果。
  • 脏读:一个事务对数据修改后还没有提交,此时另外的事务读取了这个数据。

  • 不可重复读:在同一事务中多次读取同一数据得到不同结果,这可能是读取过程中有另外的事务修改了数据。

  • 幻读:第一个事务对涉及全表的数据进行修改,此时,另外的事务也修改表中的数据(如插入一行新数据),就会导致第一个事务操作完发现还有未修改的,就好像发生幻觉一样。

4、事务的隔离级别(4种)

隔离级别脏读不可重复读幻读

加锁读

读未提交(read uncommited)

不加锁

读已提交(read commited)X

不加锁

可重复读(repeatable read)XX

不加锁

可串行化(serializable)XXX

加锁

  • 对号()表示会出现的情况,错号(X)表示不会出现的情况。
  • MySQL中默认的隔离级别是可重复读。

5、事务的ACID特性

  • 原子性(Atomicity):事务是应用中最小的执行单位,要么全部成功,要不失败回滚,对数据库不能产生影响。
  • 一致性(Consistency):事务执行的结果,是使数据库从一个一致性状态到另外一个一致性状态。
  • 隔离性(isolation):各个事务的执行互不干扰,任意一个事务的内部操作对其他并发事务都是隔离的。
  • 持久性(Durability):一个事务一旦提交,对数据库所做的改变是永久的

二、数据库内连、外连

表的连接可分为内连接和外连接,其中外连又分为左外连接和右外连接。

下面通过创建一张简单student(id int, name varchar(20))表,一张score(id int, sum double)来具体展示。

1、内连接

select 字段  from  表1  inner join 表2  on  连接条件  and  其他条件

2、左外连接

联合查询中左表完全显示,右表不足的地方全部为null。

select  字段名  from  表名1  left  join  表名2  on  连接条件

3、右外连接

联合查询中右表完全显示,左表不足的地方全部为null。

select  字段名  from 表名1 right  join  表名2  on  连接条件

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值