【MySQL基础】事务与存储过程
来源:互联网 发布:锦尚中国的源码怎么样 编辑:程序博客网 时间:2024/05/20 13:12
1.事务的概念
(1)事务:逻辑上的一组操作,MySQL默认自带事务,但是一个语句独占一个事务,也可以自己来控制事务。
- start transaction —开启事务,在这条语句之后的sql将处于同一事务中,并不会立即影响到数据库
- commit –提交事务,让这个事务中的sql对数据库的影响立即发生
- rollback – 回浪事务,取消这个事务,这个事务不会对数据库中的数据产生影响了
2.事务的四大特性
(1)原子性:事务是一组不可分割的单位,要么同时成功要么同时不成功
(2)一致性:事务前后的数据完整性应该保持一致,
(数据库的完整性:如果数据库在某个时间点下,所有的数据都符合所有的约束)
(3)隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰
多个并发事务之间数据要相互隔离。
(4)持久性:一个事务一旦被提交,他对数据库中的数据的改变就是永久性的
即使数据库发生故障也不应该对其有任何影响。
3.读与隔离级别
(1)读
*脏读:一个事务读取到另一个事务未提交的数据。
*不可重复读:一个事务多次读取同一条记录,读取的结果不相同
(一个事务读取到另一个事务已经提交的数据)
*虚读(幻读):一个事务多次查询整表的数据,由于其他事务新增(删除)记录造成多次查询出的记录条数不同。
(2)四大隔离级别
注:mysql 默认是repeatable read 级别!
4.流程控制语句的使用
(1)IF 语句
例:
delimiter // create procedure Pro3() begin declare a varchar(20); if a is null then select 'is null'; else select 'is not null'; end if; END //delimiter ;
(2)CASE 语句
例:
delimiter // create procedure Pro4() begin declare b int; case b when 1 then select 'value is 1'; when 2 then select 'value is 2'; end case; END //delimiter ;
(3)LOOP 语句
例:
create procedure Pro5() begin declare id int default 0; my_loop:Loop set id = id+1; if id<10 then iterate my_loop; elseif id>20 then leave my_loop; end if; select 'id is between 10 and 20'; end Loop my_loop; END
注:leave 跳出循环
iterate 再次循环
(4)REPEAT 语句
例:
declare id int default 0; repeat set id = id+1; untill id>=10 ; end Loop REPEAT;
(5)WHILE语句
例:
declare idcard int default 0; while i<10 Do set idcard = idcard+1; end while;
5.存储过程的使用
(1)执行存储过程
例:
delimiter // create procedure Pro3() begin declare a varchar(20); if a is null then select 'is null'; else select 'is not null'; end if; END //call Pro3();
(2)查看存储过程
* show procedure status;* show procedure status like '%2';* show create procedure Proc4;* select * from information_schema.Routines;
(3)修该存储过程(特性)
alter produce Pro3 modifies sql data sql security invoker;
(4)删除存储过程
例:
drop procedure Proc4;
6.光标的使用
(1)光标的声明
declare cursor_student cursor for select s_name from student;
(2)光标的使用
*使用名称为cursor_student的光标,将查询出的信息存入s_name
fetch cursor_student into s_name;
(3)光标的关闭
close cursor_student;
(4)打开光标
open cursor_student;
本人才疏学浅,如有错误,请指出
谢谢!
- 【MySQL基础】事务与存储过程
- Mysql | 事务&存储过程
- Mysql | 事务&存储过程
- mysql存储过程事务
- 存储过程与事务
- 存储过程与事务
- 存储过程与事务
- mysql基础学习(2) 索引、存储过程、事务
- MySQL 存储过程/游标/事务
- MYSQL 存储过程的事务
- MySQL存储过程 事务transaction
- MySQL存储过程 事务transaction
- Mysql存储过程基础
- 事务与存储过程实例
- 存储过程与事务案例
- SQL 事务 (存储过程与事务)
- mysql存储引擎与事务
- Mysql存储引擎与事务
- 欢迎使用CSDN-markdown编辑器
- wpf中左侧导航的实现
- java大神网站
- WampServer中MySQL中文乱码解决
- tensorflow的基本用法(八)——dropout的作用
- 【MySQL基础】事务与存储过程
- Ubuntu下tensorflow安装
- LeetCode 165. Compare Version Numbers
- 小瓜牛漫谈 — String、StringBuffer、StringBuilder
- 浮点数的二进制表示
- IOS
- MySQL的查询方法
- MYSQL常用命令
- JVM概述