0
点赞
收藏
分享

微信扫一扫

2022最新超详MySQL(很适合初学者,基础篇)

上节目录


 

一.Mysql下载安装启动(适合没有下载按照好MySQL的小伙伴,超详图文教程)

二.图形化界面工具(更方便操作数据库,超详细图文安装教程)

三.SQL(MySQL的核心)

 1.DDL (数据库操作,表操作,表操作-数据类型,表操作-案例)

 2.DML(添加数据,修改数据,删除数据)

3.DQL(基本语法,基础查询,条件查询,聚合函数,分组查询,排序查询,分页查询,案例,执行顺序)

 4.DCL(管理用户,权限控制)

四.函数(字符串函数,数值函数,日期函数,流程函数)

五.约束(主键,外键,非空,唯一,默认)

六.多表查询(多表关系,内连接,外连接 ,自连接,子查询)



本节目录

1.事务简介

2.事务操作 

1.未控制事务

1). 测试正常情况

2). 测试异常情况  

2.控制事务一

3.控制事务二

3.事务四大特性

4.并发事务问题

5.事务隔离级别


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 }

举报

相关推荐

0 条评论