※存储过程
存储过程是保存在数据库上的一段可执行代码。
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';

※事务的隔离

最新文章

  1. 为何img、input等内联元素可以设置宽、高
  2. BZOJ 3223: Tyvj 1729 文艺平衡树
  3. Label Font 字体样式设置
  4. ASP.NET MVC下判断用户登录和授权的方法
  5. HM必修3
  6. I Count Two Three---hdu5878(打表+二分)
  7. [HRBUSTOJ1476]Pairs(FFT)
  8. js和 jquery对象
  9. [Mac]使用xcode命令行编译protobuf
  10. GitHub Desktop安装异常解决
  11. sqlserver2012安装过程
  12. rs(0)与rs("字段名")的区别
  13. unity 改变鼠标样式的两种方法
  14. yarn集群客户端gateway常用限制
  15. 并发之线程封闭与ThreadLocal解析
  16. Kali Linux渗透测试实战 2.2 操作系统指纹识别
  17. Oracle查询锁表和解锁
  18. Ubuntu安装 jdk.rpm 报错问题解决
  19. c语言蛋疼的字符串赋值
  20. windows服务的安装和卸载方法

热门文章

  1. 先前设定的sa密码忘记了,如何修改sa密码?
  2. 关于hibernate映射过程中的笔记
  3. 《GettingThingsDone》--GTD学习笔记(三)-GTD的三个关键原则
  4. android NDK 实用学习(四)-类缓存
  5. RPI-Wireless-Hotspot
  6. hdu4612-Warm up(边的双连通分量)
  7. light oj 1138 - Trailing Zeroes (III)【规律&&二分】
  8. hdoj 3790 最短路径问题
  9. [iOS基础控件 - 4.1] APP列表
  10. Javascript注意事项一【防止浮点数溢出】