mysql变量分为三种类型:系统变量,用户定义变量,局部变量。
一、系统变量
系统变量是mysql服务器提供,不是用户定义,属于服务器层面,分为全局变量(global)和会话变量(session),不指定变量类型默认session会话变量
-- 变量:系统变量
-- 查看系统变量
show session variables; -- 查看所有会话系统变量
show global variables; -- 查看所有全局系统变量
show global variables like 'auto%'; -- 可以通过like模糊匹配方式查找变量
show session variables like 'auto%';
select @@global.autocommit; -- 查看指定变量的值
select @@session.autocommit;
-- 设置系统变量
set session autocommit =1; -- 系统变量名 = 值
set global autocommit =1;
注:mysql服务重新启动后,所设置的全局参数会失效,要想不失效,可以在 /etc/my.cnf中配置
二、用户定义变量
无需声明,其作用域为当前连接。
-- 变量:用户定义的变量
-- 赋值
-- 方式一
set @myname = 'itcast'; -- @变量名 无需声明,直接使用
set @myage :=10; -- 可以使用= 或者:=
set @mygender :='男',@myhobby :='mysql';
-- 方式二
select @mycolor :='red';
select count(*) into @mycount from tb_user;
-- mysql中的赋值与比较运算符都是 = 故推荐赋值使用 :=
-- 使用
select @myname,@myage,@mygender,@myhobby;
select @mycolor,@mycount;
select @abc;-- 用户定义的变量无需声明或者初始化,只是获取的值为null
三、局部变量
访问之前需要declare声明,可用作存储过程内的局部变量和输入参数,局部变量的范文是在其内声明的begin ... end块。
-- 变量:局部变量
-- 声明 declare
-- 赋值
create procedure p2()
begin
declare stu_count int default 0;-- 声明 declare 变量名 变量类型 [default ...]
set stu_count :=100; -- 赋值
select count(*) into stu_count from student;-- 赋值 select 字段名 into 变量名 from 表明 ...
select stu_count;
end;