MySQL数据学习之事务

1 什么是事务

1.1 是什么

  • 可以把事务看做是sql语句组,事务是有单条或者多天sql语句组成的单元
  • 在这个单元中,每条sql语句是都是相互依赖的,所有的sql语句执行成功,这个事务才会执行成功
  • 只要有一条执行失败,那就会撤销执行,回滚到最初未执行的状态.

2.事务的特性

  • 原子性:事务是一个整体,具有整体性,不可分割
  • 一致性: 内部保持抑制,比如你转账了 1000元,你的账户就会减少100元,对方的扎账户就会增加1000元.保持一致.
  • 孤立性:每个事务都在自己的空间内执行,与其他嘎生在系统中的事务隔离,保证事务之间不会相互冲突.
  • 持久性:系统可以通过事务的更新的日志和最后的备份,恢复丢失的数据.

注意
在默认情况下,在MySQL中创建的数据表类型是MyISAM ,但是该类型不支持书屋,所以要将操作数据表的类型设置为InnoDB或者BDB.
所以创建事务过程要创建一个InnoDB或者BDB

创建表时:

CREATE TABLE test01(
#这里加创建表的条件
)TYPE=INNODB / BDB;

在创建表后:

ALTER TABLE student TYPE =INNODB/ BDB;

使用alter table 操作可能会导致数据库中的数据丢失,所以修改前要对表进行备份.

2 事务的初始化,创建,提交,回滚

CREATE TABLE account(
	id INT(16) AUTO_INCREMENT PRIMARY KEY NOT NULL,
	`name` VARCHAR(30),
	number VARCHAR(30)
)ENGINE= INNODB;
DROP TABLE account;
INSERT INTO account(id,`name`,number)VALUES(1,'zhang3','2200'),(2,'wang5','2000');
SELECT * FROM account;

# set autocommit 设置自动提交功能,0表示关闭,1表示打开.
SET autocommit=0;
#1.开启事务
START TRANSACTION;
#2.开启事务
BEGIN;

UPDATE  account SET number=number-1000 WHERE `name`='zhang3';
UPDATE  account SET number=number+1000 WHERE `name`='wang5';
#提交事务
COMMIT;
#回滚事务
ROLLBACK;
SELECT * FROM account;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值