变量
系统变量
- 变量由系统定义,不是用户定义,属于服务器层面
- 全局变量需要添加 GLOBAL关键字,会话变量需要添加 SESSION关键字,如果不写,默认 SESSION 级别
- 全局变量
- 会话变量
查看所有系统变量
SHOW GLOBAL|SESSION VARIABLES;
查看指定系统变量
SHOW GLOBAL|SESSION VARIABLES LIKE '%模糊查询%';
SELECT @@GLOBAL|SESSION 系统变量名;
为某个系统变量赋值
SET GLOBAL|SESSION 系统变量名=值;
SET @@GLOBAL|SESSION.系统变量名=值;
自定义变量
用户变量
- 作用域:针对于当前会话(连接)有效,作用域同于会话变量
赋值
SET @变量名=值;
SET @变量名:=值;
SELECT @变量名:=值;
SELECT 字段 INTO @变量名 FROM 表;
查看
SELECT @变量名;
局部变量
- 仅仅在定义它的 begin end 块中有效
- 应用在 begin end 中的第一句话
声明
DECLARE 变量名 类型 默认值
赋值
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT 局部变量名:=值;
SELECT 字段 INTO 局部变量名 FROM 表;
查看
SELECT 局部变量名;
用户变量和局部变量的对比
类型 | 作用域 | 位置 | 语法 |
用户变量 | 当前会话 | 任意 | 加 @ 符号,无需指定类型 |
局部变量 | 定义它的 BEGIN END 中 | BEGIN END 的第一句话 | 一般不用加 @,需要指定类型 |
案例:声明两个变量,求和并打印
#用户变量SET @m=1;SET @n=1;SET @sum=@m+@n;SELECT @sum;#局部变量DECLARE m INT DEFAULT 1;DECLARE n INT DEFAULT 1;DECLARE SUM INT;SET SUM=m+n;SELECT SUM;