变量总体可以分为两大类
- 系统变量
- 全局变量
- 会话变量
- 自定义变量
- 用户变量
- 局部变量
一、系统变量
说明:系统变量是由系统提供,不是用户定义的,属于服务器层面
作用域 | |
---|---|
全局变量 | 服务器每次启动都会为所有的全局变量赋初始值,针对于所有会话(连接)有效,但是不能跨重启 |
会话变量 | 仅仅针对于当前会话(连接)有效 |
使用的语法:
1.查看所有的系统变量
1.SHOW GLOBAL VARIABLES;全局变量
2.SHOW SESSION VARIABLES;会话变量
3.SHOW VARIABLES;会话变量
2.查看满足条件的部分系统变量
1.show global varibles like '%char%';查询变量名中含有char的全局变量
2.show session variables like '%char%';查询变量名中含有char的会话变量
3.show varibales like '%char%';查询变量名中含有char的会话变量
3.查看指定的某个系统变量的值
1.select @@global.系统变量名; 查看指定的某个全局系统变量的值
2.select @@session.系统变量名; 查看指定的某个会话系统变量的值
3.select @@系统变量名; 查看指定的某个会话系统变量的值
4.为某个系统变量赋值
方式一:
1. set global 系统变量名 = 值
2. set session 系统变量名 = 值
3. set 系统变量名 = 值
方式二:
4. set @@global.系统变量名 = 值
5. set @@session.系统变量名 = 值
6. set @@系统变量名 = 值
二、自定义变量
说明:变量是用户自定义的,不是有系统提供的
使用步骤:①声明 ② 赋值 ③使用(查看,针对,运算)
作用域 | 应用 | 语法 | |
---|---|---|---|
用户变量 | 针对当前的会话(连接)有效,同会话变量的作用域 | 应用在任何地方,也就是begin end 里面或 begin end 外面 | 必须加@符号,不用限定类型 |
局部变量 | 仅仅在定义它的begin end中有效 | 应用在begin end 中的第一句话 | 一般不用加@符号,需要限定类型 |
1.用户变量
1. 声明并初始化
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
2. 赋值(更新用户变量的值)
方式一:通过SET或SELECT
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
方式二:通过 SELECT INTO
SELECT 字段 INTO 用户变量名
FROM 表;
3. 使用(查看用户变量的值)
SELECT @用户变量名
2.局部变量
1. 声明
DECLARE 局部变量名 类型;
DECLARE 局部变量名 类型 DEFAULT 值;
2. 赋值
方式一:通过SET或SELECT
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;
方式二:通过 SELECT INTO
SELECT 字段 INTO 局部变量名
FROM 表;
3. 使用
SELECT 用户变量名