系统变量
由MySQL数据库系统提供的变量,无需用户定义。根据作用域的不同,系统变量可分为全局变量和会话变量。
- 全局变量
针对整个服务器,即所有的连接都起作用,若服务器重启则会恢复原始,之前所做的更改都会无效。 - 会话变量
针对当前连接,不影响其它的连接。
系统变量的相关操作
不指定变量的作用范围时,默认是会话级别的。
- 使用匹配方式查看系统变量
SHOW [GLOBAL|SESSION] VARIABLES [LIKE <变量匹配表达式>];
- 查看指定的某个系统变量
SELECT @@[GLOBAL|SESSION.]<变量名>;
- 修改变量
#方式1: SET @@[GLOBAL|SESSION.]<变量名> = <值>; #方式2: SET [GLOBAL|SESSION.] <变量名> = <值>;
自定义变量
自定义变量是由用户自己定义的变量,可分为用户变量和局部变量。
- 用户变量
作用域是当前会话。- 变量的声明和初始化
SET @<变量名> = <值>;
- 变量的赋值或者修改
#方式1: SET @<变量名> = <值>; #方式2: SET @<变量名> := <值>; #方式3: SELECT <字段,表达式> INTO @<变量名> [FROM <表>];
- 变量的声明和初始化
- 局部变量
作用域在BEGIN END块中。- 变量的声明和初始化
变量的声明语句必须放在BEGIN END的最前面,即声明语句之前不能有其他语句。DECLARE <变量名> <变量类型> [default <默认值>];
- 变量的赋值或者修改
局部变量的操作和用户变量的操作的差异就在于在变量名的前面少使用一个@符号。#方式1: SET <变量名> = <值>; #方式2: SET <变量名> := <值>; #方式3: SELECT <字段,表达式> INTO <变量名> [FROM <表>];
- 变量的声明和初始化