InnoDB事务处理

InnoDB支持事务,取代MyISAM
事务英文名称:transaction
进行一次处理的基本单元,要么完全执行,要么都不执行
保证了数据处理的完整性,保证了数据库的数据一致性
高级处理数据方式
允许我们回滚还原(你买了商品,小卖铺老板忘记你付过款,让你重新付,如果这时候掌握了事务的特性,就不出产生这种问题了)
事务特性
ACID
A:原子性(Atomicity)
不可分割,进行数据处理的基本单位
C:一致性(Consistency)
数据库进行事务操作时,会有原来一直的状态变为另一种一致的状态,也就是说当事务提交后,回滚也不会破坏数据库的完整性约束
I:隔离性(Isolation)
每个事务都是彼此独立的,不会受到其他事务的执行影响
一个事务在提交之前,对其他事务是不可见的
D:持久性(Durability)
事务提交之后对数据的修改时持久性的,即使在系统出故障的情况下,数据修改依旧有效。当事务完成,这时可以通过日志,让系统恢复到最后一次成功的更新状态

原子性是基础,隔离性是手段,一致性是约束条件,持久性是我们的目的
补充:约束性条件:DDL全称:Data Definition Language
数据定义语言。定义了数据库的结构和数据表的结构
在DDL中,我们使用对应的命令:
CREATE DROP ALTER
不需要COMMIT,就可以完成执行任务

CREATE DATABASE nba;
DROP DATABASE nba;
#对数据表进行定义
CTEATE TABLE [table_name](字段名 数据类型,....)

CREATE TABLE player(
  player_id int(11) NOT NULL AUTO_INCREMENT,
  player_name varchar(255) NOT NULL
);

需要注意逗号,和分号的位置
其实我们可以通过可视化工具将其创建出来

在这里插入图片描述

一致性的七大约束
1.主键约束
主键唯一标识一条记录,不能重复,不能为空
一个数据表的主键只能有一个。主键可以是一个字段,也可以由多个字段复合而成。我们将player_id 设置成了主键
2.外键约束
外键确保了表和表之间引用的完整性。一个表中的外键对应另一张表的主键。
外键可以是重复的,也可以为空
例如:球员比分表player_score的外键就是player_id,关联到player表中
3.字段约束
4.唯一性约束
我们已经设置了主键,但是有时也需要在其他字段中进行唯一性约束,比如给player_name设置唯一性约束,就保证了每个球员的名字不能相同
5.NOT NULL约束
6.DEFAULT
字段默认值约束,字段没有取值,就设置为默认值,DEFAULT 0.00
7.CHECK约束
我们可以实行检查约束。对身高height的数值进行CHECK约束,必须>=0且<3。
设计数据表的原则
三少一多
1.数据表的个数越少越好
2.数据表中的字段越少越好
3.数据表中联合主键的字段个数越少越好
4.使用主键和外键越多越好
事务的控制
事务常用控制语句
1.START TRANSCTION或者BEGIN:显式开启一个事务
2.COMMIT:提交事务。当提交事务后,对数据库的修改是永久性的
3.ROLLBACK或者ROLLBACK TO [SAVEPOINT],意为回滚事务
4.SAVEPOINT:在事务中创建保存点,方便后续对保存点进行回滚
5.SET TRANSACTION:设置事务的隔离级别

需要注意的是:隐式事务实际上在MYSQL中是自动提交

一个BEGIN 一个显式事务,回滚全覆盖

completion_type参数作用
0:默认情况,执行commit会提交事务,执行下一个显式事务时,还需要使用START TRANSACTION或者BEGIN来开启,不然就是隐式事务
1:开启一个链式任务,commit提交任务后,下一阶段会开启一个相同级别的事务
2:提交后,会自动与服务器断开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值