1. 用户定义变量
用户定义变量是指一个自定义的变量,可以在MySQL语句中被定义,赋值和使用,并可以在整个会话中保持不变。和MySQL内置的系统变量、用户变量相对应。用户定义变量的命名规则是使用@字符作为前缀,后面加上变量名。用户定义变量的值可以是数字、字符串等数据类型,且可以根据需要进行更改。
1.1 定义、赋值及使用
用户定义变量可以在MySQL语句中使用SET语句进行定义、赋值和使用。例如,定义一个名为@var_x
的用户定义变量,并将其赋值为数字10
,语句如下所示:
SET @var_x := 10;
在赋值之后,可以在查询语句中使用定义的变量进行计算和处理。例如:
SELECT @var_x * 0.5;
其中,@var_x
表示之前定义的变量,0.5
是一个浮点数常量,结果将会是5
。
1.2 注意事项
在使用用户定义变量时,需要注意以下几点:
用户定义变量不需要事先声明,可以在任何地方定义和使用。
定义变量时,变量名不需要加引号。
用户定义变量可以在同一语句中使用多次,也可以在多个语句中使用。
用户定义变量只在当前会话中有效,会话结束时变量的值也将消失。
在使用用户定义变量时,需要注意其作用域,即保持了变量的值所需要满足的条件,如SELECT、UPDATE和INSERT语句等。
2. 局部变量
局部变量是指在存储过程和函数中定义的变量,仅在存储过程和函数内部有效,这与用户定义变量不同,它的作用范围是被定义的存储过程或函数。在MySQL中,局部变量需要使用DECLARE语句定义,也可以使用SET语句进行赋值和修改值。
2.1 定义和使用
定义局部变量时需要使用DECLARE语句,其语法如下所示:
DECLARE variable_name[, variable_name]... type [DEFAULT value];
其中,variable_name
表示变量名,可以定义多个变量,type
表示变量的数据类型,DEFAULT
是可选的关键字,表示变量的默认值。
使用局部变量时,需要使用SET语句进行赋值,或者在语句中使用已经定义的变量,例如:
SET @x := 1;
DECLARE var_x INT DEFAULT 0;
BEGIN
SET var_x = @x;
SELECT var_x;
END;
以上代码中,我们创建了一个名为var_x
的局部变量,其数据类型是INT
,并设置默认值为0
。然后,我们将用户定义变量@x
的值赋给这个局部变量,并在查询语句中使用这个变量输出结果。
2.2 注意事项
在使用局部变量时,需要注意以下几点:
局部变量必须使用DECLARE语句定义,不支持在任何地方直接定义和使用。
定义变量时,变量名不需要加引号。
局部变量只在存储过程或函数内部有效,函数执行结束后会被自动销毁。
在使用局部变量时,需要遵守其作用域,即只在存储过程或函数内部有效。
可以使用SET语句对局部变量进行赋值和修改值。
总结
MySQL中的用户定义变量和局部变量都是在程序执行过程中动态创建的变量。用户定义变量没有类型限制,可以在整个会话中使用;而局部变量必须先声明才能使用,并且只在存储过程或函数内部有效。在使用这两种变量时,需要注意其作用域和使用规则。