相关文章推荐
奔跑的铁板烧  ·  MetaMask ...·  2 年前    · 
玩篮球的火锅  ·  excel vba 数组查找-掘金·  3 年前    · 
热心的西装  ·  Java 11: ...·  3 年前    · 
1 用户变量介绍
用户变量即用户自己定义的变量,我们可以给用户变量分配值,并且可用在任何可以正常使用标量表达式的地方。
引入用户变量之前我们必须使用set语句或select语句来定义它,然后为它赋一个值,否则变量就只有一个空值。
用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。 2 用户变量定义
set语句可用于向系统变量或用户变量赋值,针对用户变量的定义如下:
SET @var_name = expr [, @var_name = expr] ...
也可使用select语句来定义:
SELECT @var_name := expr [, @var_name = expr] ...
用户变量:以"@"开始,形式为"@var_name",以区分用户变量及列名。它可以是任何随机的,复合的标量表达式,只要其中没有列指定。
一个变量名可以由当前字符集的数字字母字符和“_”、“$”和“.”组成。缺省字符集是ISO-8859-1 Latin1;这可以用mysqld 的--default-character-set 选项更改字符集。 对于SET,可以使用=或:=来赋值,对于SELECT只能使用:=来赋值。
我们可以使用一条简单的select语句查询定义的用户变量的值。 3 用户变量的使用

3.1 通过set的实例
用来把一个值赋给一个变量的标量表达式可以是复合表达式。计算,函数,系统标量以及其他用户变量都是允许的,子查询也是允许的。然后通过select语句可以获取一个用户变量的值,结果是带有一行的一个表。

mysql> set @var1=1, @var2='vartest', @var3=abs(-2), @var4=(select count(*) from mysql.user);
mysql> select @var1, @var2, @var3, @var4;
+-------+---------+-------+-------+
| @var1 | @var2   | @var3 | @var4 |
+-------+---------+-------+-------+
|     1 | vartest |     2 |    25 |
+-------+---------+-------+-------+
在用来为一个用户变量赋值的表达式中,也可以指定其它的用户变量, 需要注意的是mysql首先确定所有表达式的值,之后才会把值赋给变量。
mysql> set @varA = 2; 
对于下面两个例子,varB的值是不同的。
mysql> set @varA = 3, @varB = @varA;
mysql> select @varB;
+-------+
| @varB |
+-------+
|     2 |
+-------+
例2:
mysql> set @varA = 3; 
mysql> set @varB = @varA;
mysql> select @varB;                                             
+-------+
| @varB |
+-------+
|     3 |
+-------+

3.2 通过select的实例
相对set语句而言,使用select定义变量,会返回一个表格形式的结果。

mysql> select @var1:=1, @var2:='vartest', @var3:=abs(-2), @var4:=(select count(*) from mysql.user);
+----------+------------------+----------------+------------------------------------------+
| @var1:=1 | @var2:='vartest' | @var3:=abs(-2) | @var4:=(select count(*) from mysql.user) |
+----------+------------------+----------------+------------------------------------------+
|        1 | vartest          |              2 |                                       25 |
+----------+------------------+----------------+------------------------------------------+
mysql> select @var1, @var2, @var3, @var4;
+-------+---------+-------+-------+
| @var1 | @var2   | @var3 | @var4 |
+-------+---------+-------+-------+
|     1 | vartest |     2 |    25 |
+-------+---------+-------+-------+
+-------+---------+-------+-------+
|     1 | vartest |     2 |    25 |
+-------+---------+-------+-------+
4 用户变量注意事项 4.1 用户变量用在where或having子句中,他们必须首先用另一条语句来定义,如下面例子,初次查询没有返回结果,先定以后在查询才有输出。
mysql> select @H:='localhost' from mysql.user where host = @H;
Empty set (0.00 sec)
mysql> select @H:='localhost';
+-----------------+
| @H:='localhost' |
+-----------------+
| localhost       |
+-----------------+
1 row in set (0.00 sec)
mysql> select @H:='localhost', user from mysql.user where host = @H;
+-----------------+-----------------+
| @H:='localhost' | user            |
+-----------------+-----------------+
| localhost       |                 |
| localhost       | jesse           |
| localhost       | local           |
| localhost       | root            |
| localhost       | user_tab_update |
+-----------------+-----------------+

4.2 用户变量为session级别,当我们关闭客户端或退出登录时用户变量全部消失。如果想用就保存自定义的变量,需要自行创建一个表,将标量insert到表里。
4.3 用户变量名对大小写不敏感。
4.4 未定义的变量初始化是null。
5 补充知识:mysql语句do

在do语句中,使用了一个或多个标量表达式,mysql会一条一条的处理它们,但并不显示表达式的结果。例如我们可以调用函数执行后台的某些事情,而不需要看到其结果。

mysql> do sleep(5);
Query OK, 0 rows affected (5.00 sec)

****************************************************************************************
原文地址: http://blog.csdn.net/jesseyoung/article/details/40779631
博客主页: http://blog.csdn.net/jesseyoung
**************************************************************************************** 1 用户变量介绍    用户变量即用户自己定义的变量,我们可以给用户变量分配值,并且可用在任何可以正常使用标量表达式的地方。    引入用户变量之前我们必须使用set语句或select语句来定义它,然后为它赋一个值,否则变量就只有一个空值。    用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。2 用户

1、数据声明DECLRAR以及数据赋值 SET (SELECT): 可以声明局部 变量 、游标 变量 、函数和存储过程,如果在声明时没有对其赋值将 被初始化为NULL,通过使用 SET 或者SELECT 语句 对其赋值;示例:声明两个局部 变量 name和password,并为其赋值: DECLARE @name VARCHAR(32),@password VARCHAR(32) DROP TABLE IF EXISTS Employee; CREATE TABLE Employee (id INT NOT NULL PRIMARY KEY COMMENT '主键', name VARCHAR(20) NOT NULL
服务器系统 变量 服务器将维护许多表示其配置的系统 变量 。所有 变量 均有默认值。可以在命令行中或选项文件设置选项在服务器启动时对它们进行设置。大多数可以在运行时使用 SET 语句 来设置。 mysql d服务器维护两种 变量 。全局 变量 影响服务器的全局操作。会话 变量 影响具体客户端连接相关操作。 服务器启动时,将所有全局 变量 初始化为默认值。可以在选项文件或命令行中指定的选项来更改这些默认值。服务器启动后,通过连接服务器并执行 SET GLOBAL var_name 语句 可以更改动态全局 变量 。要想更改全局 变量 ,必须具有SUPER权限。 服务器还为每个客户端连接维护会话 变量 。连接时使用相应全局 变量 的当前值对客户端会话 变量
该文总体框架http://www.cnblogs.com/zhuawang/p/4090916.htmlhttp://blog.csdn.net/ set eor/article/details/17682551 MySQL 存储过程中,定义 变量 有两种方式: 1.使用 set 或select直接赋值, 变量 名以 @ 开头. 例如: set @var=1; 可以在一个会话的任何地方声明,作用域是整个会话,称为用
创建 用户 定义的 变量 ,请使用格式@variable_name,其中variable_name包含字母数字字符。从 MySQL 5.7.5开始, 用户 定义 变量 的最大长度为64个字符 用户 定义的 变量 不区分大小写。这意味着@id和@ID是一样的 SET @variable_name := value; SET @variable_name = value; SET @num = 2; SELECT @num as test; SELECT 语句 在这种情况下,必须使用