(十一)MySQL基础——变量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Steriles_/article/details/83505655

一、变量分类

(1)系统变量:根据作用域不同又划分为——全局变量和会话变量

(2)自定义变量:用户变量、局部变量

二、变量说明

1、系统变量

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

使用语法:如果是全局变量,则需要加GLOBAL;如果是会话级别,则需要加SESSION;如果不写,则默认SESSION

(1)查看所有的系统变量

-- 查看全局变量
SHOW GLOBAL VARIABLES;

-- 查看会话变量
SHOW SESSION VARIABLES;

-- 默认是查看会话变量
SHOW VARIABLES

(2)查看满足条件的部分系统变量

-- 案例查看满足条件的全局变量
SHOW GLOBAL VARIABLES LIKE '%char'

-- 案例查看满足条件的会话变量
SHOW SESSION VARIABLES LIKE '%char'

-- 默认是查看会话变量
SHOW VARIABLES LIKE '%char'

(3)查看指定的某个系统变量的值

-- 查看指定的全局变量
SHOW @@GLOBAL.系统变量名;

-- 查看指定的会话变量
SHOW @@SESSION.系统变量名;

-- 默认是查看会话变量
SHOW @@系统变量名

(4)为某个系统变量赋值

------------------  方式一  --------------------
-- 给全局变量赋值
SET GLOBAL 系统变量名 = 值;

-- 给会话变量赋值
SET SESSION 系统变量名 = 值;

-- 默认是给会话变量赋值
SET 系统变量名 = 值;

------------------  方式二  ---------------------
-- 给全局变量赋值
SET @@GLOBAL.系统变量名 = 值;

-- 给会话变量赋值
SET @@SESSION.系统变量名 = 值;

-- 默认是给会话变量赋值
SET @@系统变量名 = 值;

全局变量的作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(或者叫连接)生效,但不能跨重启

会话变量的作用域:仅仅针对当前会话(连接)有效

2、自定义变量

说明:变量是用户自定义的,不是由系统创建的

使用步骤:声明、赋值、使用(查看、比较、运算等)

(1)用户变量

作用域:针对于当前会话(连接)有效,同会话变量的作用域

使用语法:

①声明并初始化——赋值的操作符:     =   或    :=

-------------------  方式一  -------------------
SET @用户变量名 = 值;

-------------------  方式二  -------------------
SET @用户变量名 := 值;

-------------------  方式三  -------------------
SELECT @用户变量名 := 值;

②赋值(更新用户变量的值)

-------------------  方式1.1 通过SET或SELECT -------------------
SET @用户变量名 = 值;

-------------------  方式1.2  -------------------
SET @用户变量名 := 值;

-------------------  方式1.3  -------------------
SELECT @用户变量名 := 值;


-------------------  方式2.1 通过SELECT INTO -------------------
SELECT 字段 INTO @变量名 FROM 表;

③使用(查看用户变量的值)

SELECT @用户变量名;

(2)局部变量

作用域:仅仅是在定义它的BEGIN   END中有效

应用场景:应用在BEGIN   END 中第一句话

使用语法:

①声明

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

②赋值

-------------------  方式1.1 通过SET或SELECT -------------------
SET 局部变量名 = 值;

-------------------  方式1.2  -------------------
SET 局部变量名 := 值;

-------------------  方式1.3  -------------------
SELECT @局部变量名 := 值;


-------------------  方式2.1 通过SELECT INTO -------------------
SELECT 字段 INTO 局部变量名 FROM 表;

③使用

SELECT 局部变量名;

(3)用户变量和局部变量对比

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

猜你喜欢

转载自blog.csdn.net/Steriles_/article/details/83505655