MySQL 变量|存储过程|函数|流程控制结构
1-变量
1.1系统变量:
全局变量:作用域为整个服务器的变量,针对所有的连接有效
会话变量:为每一个连接的客户端提供的系统变量,作用域为本此次会话
语法
查看: show [global session] variable like ‘’; 如果没有声明式global则默认为session
查看指定系统变量: select @@gloabal, 变量名
为系统变量名称赋值:
方式1:set global 变量名=值;
方式2:set @@global,变量名=值 ; 或 set @@变量名=值
1.2自定义变量:
用户变量:针对当前连接生效,作用在begin end 里,也可以在外面
声名与赋值(更新) :
set @变量名=值;
set @变量名:=值;
select @变量名:=值;
select xx into @变量名 from表;
局部变量:仅能够放置在begin end 中有效,只能放置在第一句
声明:
declare 变量名 类型[default 值];
赋值:
方式1:
set 变量名=值;
set 变量名:=值;
select @变量名:=值;
方式2:
select xx into 变量名 from 表;
使用:
select 变量名
2-存储过程与函数
说明:都类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露名字
好处:
1、提高重用性
2、sql语句简单
3、减少了和数据库服务器连接的次数,提高了效率
2.1 存储过程
创建
create procedure 存储过程名称(参数类型 参数名 参数类型)
begin
存储语句
end
注意:参数模式:in、out、inout,其中in可以省略;存储过程体的每一条sql语句都需要用分号结尾;
调用
call 存储过程名(实参列表)
调用in模式的参数:call sp1(‘值’);
调用out模式的参数:set @name; call sp1(@name);select @name;
调用inout模式的参数:set @name=值; call sp1(@name); select @name;
查看
show create procedure 存储过程名;
删除
drop procedure 存储过程名;
2.2 函数
创建
create function 函数名(参数名 参数类型) returns 返回类型
begin
函数体
end
调用
select 函数名(实参列表);
查看
show create function 函数名;
删除
drop function 函数名;