MySQL变量分为系统变量和自定义变量
系统变量
变量由系统产生,不是用户定义,属于服务器层面。
语法
1.查看所有的系统变量
sql
show global|session Variables2.查看满足条件的部分系统变量
sql
show global|session Variables like '%char%'3.查看某个系统变量的值
sql
select @@global|【session】 Variables.系统变量名4.为某个系统变量值赋值(方式一)
sql
set global|【session】 Variables 系统变量名 = 值5.为某个系统变量值赋值(方式二)
sql
set @@global|【session】 Variables.系统变量名 = 值注意:如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果不写,则默认为session
全局变量
作用域:服务器每次启动都会为所有的全局变量赋初始值,针对于所有的会话(连接)都有效,但不能跨重启。如果连接断开,全局变量消失。
语法
1.查看所有的全局变量
sql
show global Variables2.查看部分的全局变量
sql
show global Variables like '%char%'3.查看指定的全局变量的值
sql
select @@global.autocommit;
select @@tx_isolation4.为某个全局变量赋值
sql
set @@global.autocommit = 0;会话变量
作用域:仅仅针对于当前会话(连接有效),会话变量的作用域与用户变量一样,仅限于当前连接。当当前连接断开后,其设置的所有会话变量均失效。
语法
1.查看所有的会话变量
sql
show variables;
show session variables;2.查看部分的会话变量
sql
show session variables like "%char%";3.查看某个指定的会话变量
sql
select @@tx_isolation;
select @@session.tx_isolation;4.设置某个会话变量的值
sql
方式一:
set @@tx_isolation = 'read-uncommitted';
方式二:
set session tx_isolation = 'read-uncommitted';凡是上面提到的session,都可以用local这个关键字来代替。
比如:
sql
select @@local.tx_isolation
local是session的近义词。自定义变量
**1.用户变量:**用户自己定义的,不是系统定义的
作用域:针对于当前会话(连接)有效,相当于会话变量的作用域
语法:
1.声明变量并初始化
sql
#定义/使用
select @变量名 select @变量名:= 字段名 from 表名 where 过滤语句;
set @变量名;
#赋值 方式一: @num为变量名,value为值 set @num=value;或select @num:=value;方式二: select into 例:select 字段 into 变量名 from 表2.局部变量:
作用域:其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。declare语句专门用于定义局部变量,可以使用default来说明默认值。set语句是设置不同类型的变量,包括会话变量和全局变量。
语法:
声明:
sql
declare 变量名 类型
declare 变量名 类型 default 值
或者用select …. into…形式赋值
select 表字段 into 局部变量名 from 表 where...;2.使用
sql
select @局部变量名;sql
案例:声明两个变量并赋初始值,求和,打印用户变量
sql
set @m = 1;
set @n = 2;
set @sum = @m + @n;
select @sum局部变量
sql
declare m int default 1;
declare n int default 2;
declare sum=m+n;
select sum;