目录
系统变量 查看系统变量 修改系统变量 用户自定义变量 用户变量 局部变量
系统变量
由MySQL数据库管理系统提供等等,变量名称固定,可以修改和查看值。
可分为全局变量和会话变量。
全局变量:当我们的MySQL服务没有重启时,我们可以查看和修改的变量。
会话变量:和MySQL连接形成的会话,生命周期是在整个会话过程中。
全局变量用global来修饰,而会话变量用session,通常session可以省略。
SHOW session variables;-- 查看系统会话变量
SHOW variables;-- 查看系统会话变量(省略session)
SHOW global variables like '%dir%';-- 模糊查询环境变量
SELECT @@datadir;-- 查看全局系统变量
SELECT @@session_track_transaction_info;-- 查看系统变量
修改全局变量后,在系统重启会恢复到默认状态。
SET global autocommit=0;-- 全局的自动提交的事务改为手动提交
SET session autocommit=0;-- 修改会话变量
SET @@session.autocommit=1; -- 修改会话变量另一种方式
SET @@global.autocommit=0;-- 修改全局变量另一种方式
全局变量在修改后,在不同的会话中都会立即生效,但是在重新重启MySQL服务后全局变量会恢复为默认值。如果想让全局变量依旧有效,需要去修改.ini文件(MySQL配置文件)
会话变量在修改后只对当前会话有效。一般在开发过程中修改会话变量,不建议修改全局变量。
如:字符编码格式等可以在ini文件中修改。
用户自定义变量
MySQL允许用户自定义变量,可以分为用户变量和局部变量。
作用域:当前会话中有效
设置方式①:
先声明并初始化用户变量,赋值操作既可以使用=进行赋值,也可以使用:=进行变量赋值。
语法:
set @变量名=值;
set @变量名:=值;
select @变量名:=值;
代码实例:
set @a='helloWord';
set @b:='sofwin';
select @c:='helloworld sofwin';
查看变量:
select @a;
select @b;
select @a,@b,@c;
设置方式②:
语法:
select 字段 into @变量名 from 表名;
代码实例:
select count(*) into @d from b_user;
查看变量:(与方式①相同)
select @d;
作用域:在begin end的结构体中。必须是begin end结构体的第一句。
声明方式:
declare 变量名 类型;
declare 变量名 类型 default 值;
注意:declare必须在begin后面从第一行开始。
代码实例:
begin
declare a int;
declare b varchar(20);
end;
注意:这里两句declare都算在begin后第一行,因为begin后无其他语句。
局部变量的三种赋值方式
set 变量名:=值;
select @变量名:=值;
select 字段 into 变量名 from 表名;