mysql 批处理 事务 区别_mysql里的批处理(sql语句)、触发器、事务管理、存储过程...

本文详细介绍了MySQL中的批处理、触发器、事务管理和存储过程。触发器用于在特定数据库操作前或后执行额外的SQL语句。事务管理确保数据库操作的原子性和一致性,可通过start transaction、commit和rollback进行控制。存储过程则是一组预编译的SQL语句,方便重复使用和参数化操作。
摘要由CSDN通过智能技术生成

lshow triggers;

查询当前数据库下所有表的触发器

在information_schema数据库下,有一个表叫triggers,里面保存了所有数据的触发器信息

ldrop triggers trigger_name ;

删除触发器

例题1:

l在新同学入学时,将他的姓名和年龄存至另外一个表内

创建触发器

0818b9ca8b590ca3270a3433284dd417.png

使用触发器

0818b9ca8b590ca3270a3433284dd417.png

向student表插入数据的之后,会向stu表插入新数据的姓名和年龄

关键字new和old的区别:

0818b9ca8b590ca3270a3433284dd417.png

例2:

l删除一个部门之前,先删除掉这个部门下的所有员工

Delete from department where name=’市场部’;

0818b9ca8b590ca3270a3433284dd417.png

1市场部

Old.id=1

例3:

记录学生的改名记录

当一个学生改名时,把原名和新名插入到一个表中,并保存改名的时间

0818b9ca8b590ca3270a3433284dd417.png  

十八、事务管理

为保证数据库内容的一致,就要将数据库的一组操作作为一个整体来进行,要么全部成功完成,要么全部失败退出。

开启事务处理的方式:

l标准事务:start transaction

l非标准:set autocommit=0

区别?????????

标准的:遇到commit或rollback语句,则认为是事务终止,后面的语句会立即写入到文件

非标准的:即使遇到commit或rollback语句,后面语句仍然处于事务之中,说明不会写入到文件

lset autocommit = { 0 | 1 } 设置是否为自动提交

set autocommit=0:表示关闭自动提交模式

set autocommit=1:表示开启自动提交模式

lstart transaction:开启标准事务

lcommit:提交事务

lrollback:回滚事务

Set autocommit=0;//关闭自动提交模式

Delete from student;

Delete from subject;

//到此为止,数据没有真正写入到文件

//Commit;

//如果执行commit,数据真正写入

//Rollback

//事务回滚

问题?

有10条数据

先删除 3条

Commit;

先删除3条

Rollback;

Savepoint 还原点1;

操作………………..

Savepoint 还原点2;

操作………………

Savepoint 还原点3;

操作………………

Rollback to 还原点(还原到指定的还原点)

还原到指定的还原点之后,这个还原点之后的还原点会自动消失

十九、存储过程

l大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

存储过程像是我们SQL里的函数

我们只需要定义存储过程,在调用时,通过指定参数,就可以帮助我们完成一些功能!

1、创建语法:

create procedure sp_name

[参数名] [类型],[参数名] [类型]

begin

.........

end

create procedure:关键字(创建存储过程)

sp_name:存储过程名称

[type]:in、out、inout

in:输入参数(在调用存储过程时,必须指定)

out:输出参数(必须指定,可以在存储过程中被修改)

[参数名]

[参数类型]:数据类型

Begin:关键字

Sql:

Sql:

End:关键字

2、查看与删除

select name from mysql.proc where db=’数据库名’;

我们创建的所有存储的信息,会保存到mysql数据库下proc表中

show procedure status where db='数据库名';

show create procedure 数据库.存储过程名;

drop procedure 数据库.存储过程名;

3、调用语法:

call sp_name [参数名]

例1:

l执行一条插入数据的语句

0818b9ca8b590ca3270a3433284dd417.png  

调用以上这个存储过程:

call proc1();

4、关于参数

In:输入参数(如果不指定,默认为in)

Out:输出参数

Inout:输入输出参数

例2:

创建一个存储过程,要求有两个输入参数分别为姓名和年龄,用户调用存储过程时需要指定两个参数,然后将传递的值插入至表中。

0818b9ca8b590ca3270a3433284dd417.png  

call proc(‘楚留香’,30);

例3:

查询年龄最大的同学的姓名

Select name from student order by age desc limit 1;

0818b9ca8b590ca3270a3433284dd417.png  

0818b9ca8b590ca3270a3433284dd417.png  

例4:

创建一个存储过程,要求可根据学生编号查询出学生的姓名和年龄

学生编号:输入参数

姓名:输出参数

年龄:输出参数

0818b9ca8b590ca3270a3433284dd417.png  

触发器:

在update、insert、delete操作之前或之或触发的sql程序

Before:之前

After:之后

一个最多6个触发器

事务处理:

只有innodb表类型支持

Myisam不能事务处理

标准、非标准

Start transaction

Set autcommit=0;

Commit;

Rollback;

存储过程:

可以指定参数

调用存储过程时必须顺序指定这几个参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值