系统变量:

  • 全局变量

作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效(更改配置文件)

  • 会话变量

作用域:仅仅当前会话
自定义变量:

  • 用户变量
  • 局部变量

    系统变量

    说明:

    变量由系统提供,不是用户定义,属于服务器层面

    使用语法:

  1. 查看系统变量(默认会话变量)

show (global/session) variables;

  1. 查看满足条件的部分变量

show global/session variales like ‘%char%’;

  1. 查看指定的某个系统变量

select @@global/session.系统变量

  1. 为某个系统变量赋值

方式一:set global/session 系统变量 = 值;
方式二:set @@global/session.系统变量 = 值;

自定义变量

格式:
声明
赋值
使用(查看、比较、运算…)

一、用户变量

作用域:针对于当前会话(连接)有效—-session
应用在任何地方,也就是begin、end

声明(并初始化)

  • SET @用户变量名=值;
  • SET @用户变量名:=值;
  • SELECT @用户变量名:=值;

赋值(更新用户变量的值)
方式一:通过SET或SELECT

  • SET @用户变量名=值;
  • SET @用户变量名:=值;
  • SELECT @用户变量名:=值;

方式二:通过SELECT INTO

  • SELECT  字段 INTO @变量名

FROM 表;
使用(查看、比较、运算…)

  • SELECT @变量名;

二、局部变量

作用域:仅仅在定义它的begin end 中有效,并且放在begin end 中的第一句话

格式:
#1、声明

  • DECLARE 变量名 类型;
  • DECLARE 变量名 类型 DEFAULT 值;

2、赋值
方式一:通过SET或SELECT

  • SET 局部变量名=值;
  • SET 局部变量名:=值;
  • SELECT @局部变量名:=值;

方式二:通过SELECT INTO

  • SELECT  字段 INTO 局部变量名

FROM 表;
#3、使用

  • SELECT 局部变量名;

对比

作用域 定义、使用位置 语法
用户变量 当前会话 会话中的任何地方 必须加@,不用限定类型
局部变量 BEGIN END中 只在BEGIN END中,且为第一句话 一般不@(SELECT除外),需要限定类型