上节目录
一.Mysql下载安装启动(适合没有下载按照好MySQL的小伙伴,超详图文教程)
二.图形化界面工具(更方便操作数据库,超详细图文安装教程)
三.SQL(MySQL的核心)
1.DDL (数据库操作,表操作,表操作-数据类型,表操作-案例)
2.DML(添加数据,修改数据,删除数据)
3.DQL(基本语法,基础查询,条件查询,聚合函数,分组查询,排序查询,分页查询,案例,执行顺序)
4.DCL(管理用户,权限控制)
四.函数(字符串函数,数值函数,日期函数,流程函数)
五.约束(主键,外键,非空,唯一,默认)
六.多表查询(多表关系,内连接,外连接 ,自连接,子查询)
本节目录
1.事务简介
2.事务操作
数据准备:
drop table if exists account;
create table account
(
id int primary key AUTO_INCREMENT comment 'ID',
name varchar(10) comment '姓名',
money double(10, 2) comment '余额'
) comment '账户表';
insert into account(name, money)
VALUES ('张三', 2000),
('李四', 2000);
1.未控制事务
1). 测试正常情况
-- 1. 查询张三余额
select * from account where name = '张三';
-- 2. 张三的余额减少1000
update account set money = money - 1000 where name = '张三';
-- 3. 李四的余额增加1000
update account set money = money + 1000 where name = '李四';
select * from account;
2). 测试异常情况
-- 1. 查询张三余额
select * from account where name = '张三';
-- 2. 张三的余额减少1000
update account set money = money - 1000 where name = '张三';
出错了....-- 故意加上的
-- 3. 李四的余额增加1000
update account set money = money + 1000 where name = '李四';
2.控制事务一
1). 查看/设置事务提交方式
SELECT @@autocommit ; SET @@autocommit = 0 ;
2). 提交事务
COMMIT;
3). 回滚事务
ROLLBACK;
3.控制事务二
1). 开启事务
START TRANSACTION 或 BEGIN ;
2). 提交事务
COMMIT;
3). 回滚事务
ROLLBACK;
转账案例:
-- 开启事务
start transaction
-- 1. 查询张三余额
select * from account where name = '张三';
-- 2. 张三的余额减少1000
update account set money = money - 1000 where name = '张三';
-- 3. 李四的余额增加1000
update account set money = money + 1000 where name = '李四';
-- 如果正常执行完毕, 则提交事务
commit;
-- 如果执行过程中报错, 则回滚事务
-- rollback;
3.事务四大特性
4.并发事务问题
1). 赃读:一个事务读到另外一个事务还没有提交的数据。
2). 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
3). 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 "幻影"。
5.事务隔离级别
为了解决并发事务所引发的问题,在数据库中引入了事务隔离级别。主要有以下几种:
1). 查看事务隔离级别
SELECT @@TRANSACTION_ISOLATION;
2). 设置事务隔离级别
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }