一,系统变量

系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)和会话变量(SESSION)

1,查看系统变量 (不设置默认为session)

show [session | global] variables; --查看所有系统变量

mysql 存储过程 拼接变量 mysql存储过程变量定义_变量名

show [session | global] variables like '……'; --可以通过like模糊匹配方式查找变量

mysql 存储过程 拼接变量 mysql存储过程变量定义_mysql 存储过程 拼接变量_02

select @@[session | global] 系统变量 --查看指定变量的值

mysql 存储过程 拼接变量 mysql存储过程变量定义_数据库_03


2,设置系统变量

set [session | global] 系统变量 = 值;set @@[session | global] 系统变量 = 值;

mysql 存储过程 拼接变量 mysql存储过程变量定义_mysql 存储过程 拼接变量_04


注意:虽然设置全局,但是当MySQL服务器重启之后,依然恢复默认值,此时需要在/etc/my.cnf文件里进行修改。

mysql 存储过程 拼接变量 mysql存储过程变量定义_系统变量_05

二,用户自定义变量

用户自定义变量是用户根据需要自己定义的变量,用户变量不需要提前声明,在用的时候直接使用“@变量名”就可以使用。其作用域为当前连接(也就是当前会话)
1,赋值
set @var_name = expr [, @var_name = expr ……];set @var_name := expr [, @var_name = expr ……];select @var_name := expr [, @var_name = expr ……];select 字段名 into @var_name from 表名; 既可以作为赋值运算符,也可以作为比较运算符,所以赋值的时候推荐使用:= 2,使用
select @var_name;

mysql 存储过程 拼接变量 mysql存储过程变量定义_mysql 存储过程 拼接变量_06


3,注意:用户自定义的变量无需对其声明或者初始化,只不过查询到的值为null

mysql 存储过程 拼接变量 mysql存储过程变量定义_mysql 存储过程 拼接变量_07

三,局部变量

局部变量是根据需要在局部生效的变量,在访问之前,需要declare声明。可用作存储过程内的局部变量和输入参数,局部变量的范围是在其声明的begin …… end块。

1,声明
declare 变量名 变量类型 [default ...] 变量类型就是数据库字段类型,int、bigint、char、varchar、date、time等

2,赋值
set 变量名 = 值;set 变量名 := 值;select 字段名 into 变量名 from 表名...;

mysql 存储过程 拼接变量 mysql存储过程变量定义_系统变量_08