MySQL数据库事务管理与存储过程

本文介绍了数据库中的事务管理和存储过程的基础知识。详细解释了事务的概念、特性及其在保证数据一致性和完整性方面的作用,并展示了如何通过SQL语句进行事务管理。此外,还探讨了存储过程的定义、作用及创建方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.事务管理

1.什么叫做事务?
一件事(务)中包含多个操作,在计算机中是指数据库的一组操作,由一条或者多条sql语句组成。
2.事务的作用:避免误操作。
3.事务规则:
要么都执行成功,要么都执行不成功,即同时执行成功,同时不执行成功。
例如:银行转账:转入和转出操作语句必须保证都执行成功,只要其中有一个执行不成功,就会全部执行不成功,这也保证了银行转账时的安全性。
4.事务管理包含2部分内容:
(1)开始事务:
START TRANSACTION;
(2)事务处理
事务处理包含2种:事务提交(commit;)和事务回滚(rollback;)。

sql语句在开始事务和处理事务之间:
例如:
START TRANSACTION;
sql语句...

COMMIT;

5.事务的4个特性:

一致性:保证数据一致完整性的操作,误操作的事务会进行事务回滚(违反约束的数据操作)。

原子性:要么都执行成功,要么都不执行成功。

持久性:事务提交成功之后,修改的数据就会存储的在数据库中,哪怕数据库出现问题(逻辑问题)。

隔离性:每个事务都应该是同时操作的,不管是否在并发的状态(多个用户同时访问数据库,每个用户开启的事务都不能被其他用户的操作影响)。

6.事务的隔离等级:4种,如下表(4种隔离等级分别会产生的问题),MySQL默认Repeatable Read(可重读)隔离等级。


设置事务隔离等级:SET SESSION TRANSACTION ISOLATION LEVEL 隔离等级;

二.存储过程:提高sql语句的重用性,是一个sql语句的集合。

1.存储过程定义位置:定义在数据库中
2.存储过程作用:提高sql代码的重用性。
3.创建存储过程的语法:
CREATE PROCEDURE 自定义名(参数)
BEGIN
待执行的sql...
END;
另:在dos命令下创建存储过程,需要按如下方式创建:


delimiter //:作用是将;(分号)转义为普通字符,使得//(双斜线)代替;(分号)的结束作用。
delimiter ;:作用是恢复;(分号)的默认的结束作用。
call two():表示执行存储过程two()(也称为函数two())。
4.存储过程的参数类型:3种:in,out,inout
in:表示输入类型,从外部提供给存储过程使用的参数。
out:表示输入类型,存储过程内部使用的参数。
inout:可以输入也可以输出类型。

参数定义语法:
参数类型 自定义参数名 数据类型
例如:

使用in作为参数类型:

USE firstdb;

CREATE PROCEDURE three(in num CHAR)

BEGIN

SELECT * FROM users111 WHERE sex=num;

END;

执行存储过程:CALL three('女');


使用out作为参数类型:out类型的参数不接受传值,默认为null,只能在存储过程代码中设置它的值,外部不能设置它的值:

CREATE PROCEDURE four(in num char,out num1 varchar(20))

BEGIN

SELECT name into num1 FROM users111 WHERE sex=num;

END;

执行:call four('女',@num1);

select @num1;

select 列名 into 变量名:表示将查询结果赋值给变量。

@num1:用作接收存储过程赋值给变量的值,是一个变量。


CREATE PROCEDURE three(in num char,out num1 varchar(20),out num2 int)

BEGIN

SELECT name into num1 FROM users111 WHERE sex=num;

set num2=30;-- 设置值

END;

执行:CALL three('女',@num1,@num2);

select @num2;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值