系统变量:
- 全局变量
作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效(更改配置文件)
- 会话变量
作用域:仅仅当前会话
自定义变量:
- 查看系统变量(默认会话变量)
show (global/session) variables;
- 查看满足条件的部分变量
show global/session variales like ‘%char%’;
- 查看指定的某个系统变量
select @@global/session.系统变量
- 为某个系统变量赋值
方式一: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除外),需要限定类型 |
