每日MySQL之018:使用SET设置用户变量和系统变量
来源:互联网 发布:阿里云华东1 编辑:程序博客网 时间:2024/06/05 19:02
MySQL中的变量分为自定义变量和系统变量,系统变量又可分为GLOBAL级别和SESSION级别
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 |
+------+--------------+
系统变量设置前面用两个@@
mysql> SET GLOBAL max_connections = 1000;
mysql> SET @@global.max_connections = 1000;
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是全局级别的系统变量。
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是全局级别的系统变量。
阅读全文
0 0
- 每日MySQL之018:使用SET设置用户变量和系统变量
- MYSQL的用户变量(@)和系统变量(@@)
- MYSQL的用户变量(@)和系统变量(@@)
- MYSQL的用户变量(@)和系统变量(@@)
- MySQL的用户变量和系统变量
- MySQL的用户变量和系统变量
- MYSQL的用户变量(@)和系统变量(@@)
- MYSQL的用户变量(@)和系统变量(@@)
- MYSQL的用户变量(@)和系统变量(@@)
- MYSQL的用户变量(@)和系统变量(@@)
- MySQL用户变量和系统变量
- mysql用户变量和set语句
- mysql 用户变量使用
- MySQL用户变量与系统变量
- mysql变量(用户+系统)
- 系统变量和用户变量及其运用
- 环境变量:用户变量和系统变量
- 用户变量和系统变量的区别
- HDOJ1241 Oil Deposits(DFS,八连通块)
- 设计模式--模版模式
- 链表倒数第n个节点
- JZOJ5257. 小X的佛光(2017.8B组)
- Android应用程序消息处理机制(Looper、Handler)分析
- 每日MySQL之018:使用SET设置用户变量和系统变量
- 1009. 说反话 (20)
- yui初始化cssreset.css
- Sqlserver 数据库文件大小和剩余空间
- poj2777 色板游戏(线段树)
- minetest源码解析一:mymain流程图以及核心函数介绍
- STM8S103之IO复用
- hdu1576--A/B(逆元)
- 用当型和直到型循环实现1到100的和