本文从全局变量、会话变量、用户变量三个方面说明
全局变量
在 MySQL 启动时,会根据配置文件以及内置默认选项,赋予所有全局变量初始值,修改全局变量会影响所有的客户端连接。
显示所有全局变量
show global variables;
说明:一般不用这个方法,因为查看变量都是有针对性的,查看所有变量不大有意义。
模糊查询全局变量
show global variables like '%key%';
一般是通过通配符 % 进行模糊查询
查询指定全局变量
select @@global.变量名;
说明:此方法也是很少用,因为没有人刻意记住某些变量名,而且这个方法只能查询一个值。
设置全局变量
set global 变量名 = 值;
set @@global.变量名 = 值;
说明:以上两种方法均可行,但后者在输入上甚至需要键入两个“@”,想必也不会有人刻意用这个。
会话变量
在客户端与 MySQL 服务器建立连接的时候,会维护一个会话,该会话有自己独特的配置参数;
如果连接者没有做任何修改,那么,这个参数依然保持与刚连接时的全局变量一致;
一旦会话结束,会话变量也就不存在了;
查看会话变量
show [session] variables;
说明:与 global 不同,session 是默认值,通常一般不刻意写。以下出现的 [] 也表示可有可无。
模糊查询会话变量
show [session] variables like '%key%';
查询指定会话变量
select @@[session.]变量名;
说明:同上,session 都是可以省略不写的,但几乎不会有人用这个命令。
设置会话变量
set [session] 变量名 = 值;
set @@[session.]变量名 = 值;
说明:以上两个方法均可行,通常用前者,且 session 常规省略。
用户变量
用户变量作用域与会话变量完全没有区别,大概只是为了用户能自定义变量而产生的;
查询用户变量
select @变量名;
设置用户变量
SET @变量名 = 值;
SET @变量名 := 值;
SELECT @变量名 := 值;
说明:仅通过一个 @ 表示;
这些命令都有声明且赋值的作用,但后两者甚至需要输入一个冒号":",想必很少有人使用。
SELECT <值> INTO @变量名
FROM 表;
说明:此方法也可以赋值
局部变量
局部变量作用域很小,一般用于存储过程中,类似程序设计语言的函数变量概念。
声明局部变量
局部变量不像其他变量那么随意,它需要规定类型。
DECLARE 变量名 类型;
如果需要声明并初始化则可以:
DECLARE 变量名 类型 DEFAULT 值;
赋值局部变量
SET 变量名 = 值;
SET 变量名 := 值;
SELECT @变量名 := 值;