使用说明
存储过程是数据库一个重要的对象,可以封装sql语句集,可以用来完成一些较为复杂的业务逻辑,一个存储过程就是一个功能,可以接受输入类型参数,可以接受输出类型参数,并且可以用多个返回值
存储过程的优点
1.增强sql语句的功能和灵活性
2.实现较快的执行速度
3.减少网络流量
参数
1.in 表示该参数的值必须在调用存储过程时指定
2.out 表示该参数的值可以被存储过程改变,并且可以返回
3.表示该参数在调用时指定,并且可以被改变和返回
语法
# 定义存储过程
delimiter //
CREATE PROCEDURE tt()
BEGIN
select * from xx;
END //
# 调用存储过程
call tt()
创建不带参数的存储过程
delimiter //
CREATE PROCEDURE tt()
BEGIN
select * from xx;
END //
# 调用
call tt()
创建带IN参数的存储过程
delimiter //
CREATE PROCEDURE aa(IN my_id INT UNSIGNED)
BEGIN
select * from tb_xxx WHERE ID=my_id;
END //
# 调用
call aa(1)
创建带有IN和out参数的存储过程
delimiter //
CREATE PROCEDURE bb(IN my_id INT UNSIGNED,OUT my_num INT UNSIGNED)
BEGIN
select * from tb_project WHERE ID=my_id;
select count(*) from tb_project INTO my_num;
END //
# 调用
call bb(1,@num)
select @num
变量
自定义用户变量
声明
#定义变量
1.SET @用户变量名=值
# 通过select into
2.SELECT 字段 into 变量名 from 表
``
查看用户变量的值
select @变量名
自定义局部变变量
只能放在begin end中且必须是begin中的第一句话
声明
DECLARE 变量名 类型
DECLARE 变量名 类型 DEFAULT 默认值
赋值
#定义变量
1.SET @用户变量名=值
# 通过select into
2.SELECT 字段 into 变量名 from 表
查看 变量
select @变量名
用户变量和局部变量的区别
作用域
用户变量针对当前会话,局部变量针对begin end
语法
用户变量声明加上@符号,不需要限定类型,局部变量不需要加@符号,需要限定类型
mysql中的流程控制
分支结构
if函数
if函数能够实现简单的分支,语法结构
if (表达式1,表达式2,表达式3) 如果表达式1成立,则返回表达式2,否则返回表达式3
case结构
可以作为表达式,嵌套在其他语句中使用,可以单独使用
等值判断
语法
case 常量|表达式|字段 when 要判断的值 then 返回的值或者语句
when 要判断的值 then 返回的值或者语句
when 要判断的值 then 返回的值或者语句
else 要返回的值
end case
区间判断
case when 条件1 then 返回的值或者语句;
when 条件2 then 返回的值或者语句;
when 条件3 then 返回的值或者语句;
else 要返回的值
end case
循环结构
while
语法结构
标签:while 循环条件 do
循环体;
end while:标签
loop
语法结构
标签:loop
循环体;
end loop:标签
repeat
语法结构
标签:repeat
循环体;
until 结束循环的条件
end repeat:标签
循环控制
iterate 类似于continue,结束本次循环,继续下一次
leave 结束当前的循环