Administrator
Published on 2021-08-20 / 126 Visits
0
0

MySQL核心之变量

变量

系统变量

  • 变量由系统定义,不是用户定义,属于服务器层面
  • 全局变量需要添加 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;

Comment