MySQL的用户变量和系统变量

MySQL中的变量分为用户变量与系统变量。

一、用户变量

用户变量是指与数据库的一次连接中声明的变量,在连接断开后就会消失。
1、变量命名
变量名必须以@开头,例如@name

2、声明及赋值
声明与赋值的方法两种,一种是使用set语句,一种是使用select语句。

/*使用set语句声明变量并赋值(注:声明的时候必须赋初值)*/
set @name='zhangsan';

/*使用select语句声明并赋值*/
select @age:=23;

3、查看用户变量
查看变量使用select语句

select @name;

二、系统变量

系统变量又分为全局变量与会话变量。

  • 全局变量在MySQL启动的时候由服务器自动将它们初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改。
  • 会话变量在每次建立一个新的连接的时候,由MySQL来初始化,MySQL会将当前所有全局变量的值复制一份,作为会话变量。也就是说,如果在建立会话以后,没有手动更改过会话变量与全局变量的值,那所有这些变量的值都是一样的。
  • 全局变量与会话变量的区别就在于,对全局变量的修改会影响到整个服务器,但是对会话变量的修改,只会影响到当前的会话(也就是当前的数据库连接)。

1、查看系统变量
查看全局变量可以使用show global variables语句,查看会话变量可以使用show session variables或者show variables语句。这些语句会列出所有的变量,如果需要查看某个变量,可以在后面加like进行模糊查询,例如:show variables like ‘%sql_mode%’。

另外,还可以使用select语句来查看系统变量。
会话变量:select @@ session/local.varname;
全局变量:select @@global.varname;

/*查询所有的全局变量*/
show global variables;

/*查询所有的会话变量*/
show variables;

/*查询名字中含有sql_mode的全局变量*/
show global variables like '%sql_mode%';
select @@global.varname;

/*查询名字中含有sql_mode的会话变量*/
show variables like '%sql_mode%';
select @@session.varname;
select @@local.varname;

2、修改系统变量
跟修改用户变量相同,修改系统变量使用的也是set语句。
当需要修改会话变量时,可以使用

set session varname=value
//或者
set @@session.varname=value

当需要修改系统变量时,可以使用

set global varname=value
//或者
set @@ global.varname=value
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,全局变量和局部变量都是指用户定义变量,用来存储在会话或整个服务器中可见的值。 全局变量是指可以在MySQL服务器的任何地方都可以访问的变量,它们的作用域是全局的。全局变量可以在MySQL配置文件中定义,也可以在MySQL命令行中动态定义。全局变量的命名规则是以@@开头,例如@@global.max_connections表示全局变量max_connections的值。 局部变量是指可以在存储过程、函数、触发器等MySQL程序对象中定义的变量,它们的作用域只在这个程序对象中。局部变量的命名规则是以@开头,例如@myvar表示局部变量myvar的值。在MySQL中,可以使用DECLARE语句来定义局部变量的类型和名称,例如: ``` DECLARE myvar INT; ``` 当程序对象执行时,会为局部变量分配内存空间,当它执行完成后,这些变量所占用的内存空间会被释放。因此,局部变量的生命周期与程序对象的生命周期相同。 全局变量和局部变量都可以存储不同类型的数据,例如数字、字符、日期等。在使用变量之前,需要先声明变量的类型和名称。在程序执行过程中,可以对变量进行赋值、修改等操作。 需要注意的是,在使用全局变量时,需要注意多个程序对象可能会同时访问同一个全局变量,因此需要考虑并发访问的问题。在使用局部变量时,需要注意变量的作用域和生命周期,确保变量只在需要的时候才会分配内存空间,并在不需要时及时释放内存空间,以避免资源的浪费。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值