MySQL事务笔记

【事务使用的方式】

手动开启/自动开启

手动方式(显式):

#开启事务
start transaction;
#提交事务
commit;
#回滚事务
rollback;

自动方式(隐式):

#显示事务自动提交(off/on)
show variables like 'autocommit'; 
//数据的增删改查
#事务自动提交关闭
set autocommit=0;

【事务acid特性】

原子性:不可分割的工作单位,在事务操作中只有都发生都不发生

持久性:一个事务已执行对数据的改变是永久性,之后的操作和数据库故障不会对其影响。

隔离性:同时间只允许一个事务请求同一数据,并发执行不同事务无任何干扰。

一致性:事务开始前和结束后,数据库的完整性约束没有被破坏,比如转钱。

数据库的完整约束性

  • 数据完整性约束是一组完整性规则的集合。
  • 规则包含:实体完整性、参照完整性、用户定义完整性。
  • 实体完整性:规定表的每一行在表中是惟一的实体。
  • 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。
  • 用户定义的完整性:用户定义的完整性即是针对某个特定关系数据库的约束条件。
  • 可以省略-域完整性:表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。

完整性约束的类型:
与表有关的约束:是表中定义的一种约束。可在列定义时定义该约束,此时称为列约束,也可以在表定义时定义约束,此时称为表约束。
域(Domain)约束:在域定义中被定义的一种约束,它与在特定域中定义的任何列都有关系。
断言(Assertion):在断言定义时定义的一种约束,它可以与一个或多个表进行关联。

隔离性有4种级别

  • read uncommitted(读未提交RU)会产生脏读现象
  • read committed(数据库的读以提交RC)产生不可重复读,幻读现象
  • repeatable read(可重复读RR-默认级别)避免脏读,不可重复读和幻读现象
  • serializable(串行化)类似队列一个一个执行,效率低最安全

设置隔离模式

默认为可重复读,一般情况下不会改模式

#查看事务隔离级别
select @@session.tx_isolation;
#设置当前mysql隔离级别
set session transaction isolation level read uncommitted;
#设置数据库系统的全局隔离级别
set global transaction isolation level read committed;

【其他】

mysql简单操作

mysql -u root -p
#输入密码
--使用数据库
use 库名
--展示所有表
show tables;
--设置编码
set names gbk;
--查看表数据
select * from 表名;
mysql事务事务

我来吐槽

*

*