mysql的变量定义

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 局部变量名 fromwhere...;

      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;

 

  

  

posted @ 2021-07-01 16:36  季白二十四  阅读(2734)  评论(0编辑  收藏  举报