mysql中的存储过程和事务隔离
※存储过程
存储过程是保存在数据库上的一段可执行代码。
1、定义存储过程的语法是:
Create procedure sp_name (参数..)
Begin
SQL语句
End;
2、调用它的方法:
Call sp_name(参数…); //空参时则括号中不填内容
3、演示
1)不带参数
定义(delimiter用于定义结束符):
DELIMITER $$
CREATE PROCEDURE p1()
BEGIN
INSERT INTO person2 VALUES('P05','李四',0);
SELECT * FROM person2;
END$$
DELIMITER ;
调用:
call p1();
2)带输入参数
DELIMITER $$
CREATE PROCEDURE p2(in id varchar(32), in nm varchar(30) )
BEGIN
INSERT INTO person2 VALUES(id,nm,0);
SELECT * FROM person2;
END$$
DELIMITER ;
call p2('P06','张飞');
CALL p2('P07','刘备');
3) 带输入、输出参数
定义:
DELIMITER $$
CREATE PROCEDURE p3(in id varchar(32), in nm varchar(30), out num int )
BEGIN
INSERT INTO person2 VALUES(id,nm,0);
SELECT count(*) into num FROM person2;
END$$
DELIMITER ;
调用:
CALL p3('P08','关羽',@aa); //一个@为用户变量,两个@为系统变量
输出返回值(输出参数)
SELECT @aa;
//输出系统变量“@@version”的值
SELECT @@VERSION--------我的是输出5.6.22-log
※查询内容区分大小写
mysql查询默认是不区分大小写的 如:
select * from table_name where a like 'a%'
select * from table_name where a like 'A%'
select * from table_name where a like 'a%'
select * from table_name where a like 'A%'
效果是一样的。
要让mysql查询区分大小写,可以:
select * from table_name where binary a like 'a%'
select * from table_name where binary a like 'A%'
select * from table_name where binary a like 'a%'
select * from table_name where binary a like 'A%'
也可以在建表时,加以标识
create table table_name(
a varchar(20) binary
);
※事务: 一个事务只会有一个结果,要么成功,要么失败。
举例:
P09,'赵子龙' 一次买了两辆车,需要把赵子龙的信息存储到person2表,同时还要把两辆车的信息存储到car表-----两个表的存储动作就是一个事务,要么成功(两个表的信息都成
功存储), 要么失败(只要其中一个表的一条数据存储失败,其它表的信息都不能存储进去,如果存进去则要还原)。
类似的例子,还有:银行转账! 销售单和销售明细!
SQL演示:
START TRANSACTION; //开启事务
DELETE FROM person2 WHERE id='P04';
DELETE FROM person2 WHERE id='P05';
ROLLBACK/COMMIT; //回滚/提交-------------事物一旦进行了提交,数据就无法再回滚了;
START TRANSACTION; //开启事务
INSERT INTO person2 VALUES('P09','赵子龙','1');
INSERT INTO car VALUES('C007','BMW',50,'P09');
INSERT INTO car VALUES('C008','QQ',7,'P09');
ROLLBACK/COMMIT; //回滚/提交
DELETE FROM car WHERE id='C007';
DELETE FROM car WHERE id='C008';
DELETE FROM person2 WHERE id='P09';
※事务的隔离
最新文章
- 为何img、input等内联元素可以设置宽、高
- BZOJ 3223: Tyvj 1729 文艺平衡树
- Label Font 字体样式设置
- ASP.NET MVC下判断用户登录和授权的方法
- HM必修3
- I Count Two Three---hdu5878(打表+二分)
- [HRBUSTOJ1476]Pairs(FFT)
- js和 jquery对象
- [Mac]使用xcode命令行编译protobuf
- GitHub Desktop安装异常解决
- sqlserver2012安装过程
- rs(0)与rs(";字段名";)的区别
- unity 改变鼠标样式的两种方法
- yarn集群客户端gateway常用限制
- 并发之线程封闭与ThreadLocal解析
- Kali Linux渗透测试实战 2.2 操作系统指纹识别
- Oracle查询锁表和解锁
- Ubuntu安装 jdk.rpm 报错问题解决
- c语言蛋疼的字符串赋值
- windows服务的安装和卸载方法
热门文章
- 先前设定的sa密码忘记了,如何修改sa密码?
- 关于hibernate映射过程中的笔记
- 《GettingThingsDone》--GTD学习笔记(三)-GTD的三个关键原则
- android NDK 实用学习(四)-类缓存
- RPI-Wireless-Hotspot
- hdu4612-Warm up(边的双连通分量)
- light oj 1138 - Trailing Zeroes (III)【规律&;&;二分】
- hdoj 3790 最短路径问题
- [iOS基础控件 - 4.1] APP列表
- Javascript注意事项一【防止浮点数溢出】