欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql中变量的种类以及定义、赋值

程序员文章站 2022-09-14 14:40:54
mysql中存在局部变量、用户变量、会话变量、全局变量,其中会话变量和全局变量统称为系统变量。一、局部变量局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。declare语句专门用于定义局部变量,可以使用default来说明默认值,通过set赋值或者select into 赋值。declare A int default 1;set A=2;declare B varchar(20);select name in...

mysql中存在局部变量、用户变量、会话变量、全局变量,其中会话变量和全局变量统称为系统变量。

一、局部变量

局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。
declare语句专门用于定义局部变量,可以使用default来说明默认值,通过set赋值或者select into 赋值。

declare A int default 1;
set A=2;

declare B varchar(20);
select name into B from table where id=1; #不能通过select := 赋值

二、用户变量

用户变量与数据库连接有关,到数据库实例接断开的时候,变量就会消失。
mysql中用户变量不用事前申明,在用的时候直接用“@变量名”使用就可以了。
可以通过set或者select赋值:

set @a=1;

select @b:=name from table where id=1;
select name into @b from table where id=1;
select @c:='abc';

三、系统变量

系统变量分为全局变量与会话变量。
查看所有系统变量:

show session variables;
show global variables 

(1)会话变量

服务器为每个连接的客户端维护一系列会话变量。在客户端连接数据库实例时,使用相应全局变量的当前值对客户端的会话变量进行初始化。
设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量,而不能更改其它客户端的会话变量。
会话变量的作用域与用户变量一样,仅限于当前连接。当当前连接断开后,其设置的所有会话变量均失效。二者有些类似,不过用户变量是面向用户自定义使用的,会话变量是面向用户维护数据库的。

设置会话变量有如下四种方式更改会话变量的值:

set session var_name = value;
set var_name = value;  #缺省session关键字默认认为是session
set @@session.var_name = value;
set @@var_name = value; #缺省session关键字默认认为是session

查看一个会话变量有如下三种方式:

select @@var_name; #省略了session
select @@session.var_name;
show session variables like "%var%";

凡是上面提到的session,都可以用local这个关键字来代替,二者为近义词。

(2)全局变量

全局变量在MySQL启动的时候由服务器自动将它们初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改。
全局变量作用于server的整个生命周期,但是不能跨重启。即重启后所有设置的全局变量均失效。要想让全局变量重启后继续生效,需要更改相应的配置文件。

要设置一个全局变量,有如下两种方式

set global var_name = value; //注意:此处的global不能省略。根据手册,set命令设置变量时若不指定GLOBAL、SESSION或者LOCAL,默认使用SESSION
set @@global.var_name = value; //同上

不过要想更改全局变量的值,需要拥有SUPER权限

要想查看一个全局变量,有如下两种方式:

select @@global.var_name;
show global variables like%var%;

本文地址:https://blog.csdn.net/qq_41286138/article/details/107161836