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