mysql中的存储过程

使用说明

存储过程是数据库一个重要的对象,可以封装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 结束当前的循环

你可能感兴趣的:(mysql,数据库,sql)