每日MySQL之018:使用SET设置用户变量和系统变量

MySQL中的变量分为自定义变量和系统变量,系统变量又可分为GLOBAL级别和SESSION级别

1. 用户自定义变量

语法如下:
SET @var_name = expr [, @var_name = expr] ...

用户自定义变量只对当前session有效。对于SET可以使用 = 或者 := 作为赋值运算符,如果是在别的场景下,必须使用 := 来赋值,否则会被当作比较符。

示例:
mysql> set @v1=1, @v2=2, @v3=3;
mysql> select @v1, @v2, @v3, @v4 := @v1+@v2+@v3;
+------+------+------+--------------------+
| @v1 | @v2 | @v3 | @v4 := @v1+@v2+@v3 |
+------+------+------+--------------------+
| 1 | 2 | 3 | 6 |
+------+------+------+--------------------+

mysql> SET @v1 = X'42';
mysql> SET @v2 = X'42'+0;
mysql> SELECT @V1,@V2;
+------+------+
| @V1 | @V2 |
+------+------+
| B | 66 |
+------+------+

mysql> SET @v1 = b'1000010';
mysql> SET @v2 = b'1000010'+0;
mysql> SELECT @V1,@V2;
+------+------+
| @V1 | @V2 |
+------+------+
| B | 66 |
+------+------+

mysql> set @v2 = @v2 + 1;
mysql> select @v2;
+------+
| @v2 |
+------+
| 67 |
+------+

mysql> select @v2, @v2 := @v2+1;
+------+--------------+
| @v2 | @v2 := @v2+1 |
+------+--------------+
| 67 | 68 |
+------+--------------+

2. 设置系统变量


系统变量设置前面用两个@@

2.1 全局变量

全局变量设置的时候,加上GLOBAL关键字,示例:
mysql> SET GLOBAL max_connections = 1000;
mysql> SET @@global.max_connections = 1000;

2.2 session级别变量

session级别的变量,可以加上SESSION关键字,示例:
mysql> SET SESSION sql_mode = 'TRADITIONAL';
mysql> SET @@session.sql_mode = 'TRADITIONAL';
mysql> SET @@sql_mode = 'TRADITIONAL';

下面的示例区分用户变量,session系统变量和global系统变量

mysql> SET @autocommit=100;
mysql> SET @@autocommit=100;
ERROR 1231 (42000): Variable 'autocommit' can't be set to the value of '100'
mysql> SET SESSION autocommit=1;
mysql> SET @@global.autocommit=0;

mysql> SELECT @autocommit, @@autocommit, @@global.autocommit;
+-------------------+----------------------+--------------------------------+
| @autocommit | @@autocommit | @@global.autocommit |
+-------------------+----------------------+--------------------------------+
| 100                   | 1                           | 0                                         |
+-------------------+----------------------+--------------------------------+

上面的示例中@autocommit是用户自定义的变量,@@session.autocommit是session级别的系统变量,@@global.autocommit是全局级别的系统变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值