二十二、MySQL基础系列笔记之变量
什么MySQL变量
MySQL本质是一种编程语言,变量用来存储数据。
与所有语言一样,变量是用来存储数据的。我们平常所写的SQL语句,实际上是在SQL编程。
MySQL两种变量
MySQL变量分为系统变量与用户自定义变量。系统变量一看就明白,系统已经定义好的变量;用户自定义变量就是用户自己的定义的变量。
系统变量
系统变量是由系统内部定义的变量,对所有用户有效。
系统变量又分为全局变量和会话变量。
全局变量
作用域:全局变量针对所有会话(连接)有效,不能重启。
查看全局变量语法
SHOW GLOBAL VARIABLES [LIKE] 变量名;
案例
查看所有全局变量
SHOW GLOBAL VARIABLES;
查看部分全局变量
SHOW GLOBAL VARIABLES LIKE '%char%';
查看指定全局变量的值
SELECT @@GLOBAL.autocommit;
为指定的全局变量赋值
SET @@global.autocommit=0;
会话变量
作用域:针对当前会话(连接)有效。
查看会话变量语法
SHOW SESSION VARIABLES [LIKE] 变量名;
查看所有会话变量
SHOW SESSION VARIABLES;
查看部分会话变量
SHOW SESSION VARIABLES LIKE '%char%';
查看指定会话变量的值
# 方式一 (推荐)
SELECT @@session.autocommit;
# 方式二
SELECT @@autocommit;
为指定的会话变量赋值
# 方式一
SET session autocommit=1;
# 方式二
SET @@autocommit=0;
用户自定义变量
用户自定义变量分为全局变量与局部变量。全局变量在任何地方可以使用;局部变量只能在定义它的begin end中有效。
用户变量
自定义变量语法
声明并初始化变量
# 方式一
SET @用户变量名=值;
# 方式二
SET @用户变量名:=值;
# 方式三
SET @用户变量名 := 值;
变量赋值:SET或SELECT
# 方式一
SET @用户变量名=值;
# 方式二
SET @用户变量名:=值;
# 方式三
SELECT @用户变量名:=值;
# 也可以通过SELECT INTO方式
SELECT 字段名或表达式 INTO @变量名 FROM 表名;
# 案例
select id+10 into @uuid from user where id = 8;
查看变量
SELECT @用户变量名;
案例
# 声明变量并赋值
SET @age := 19;
# 更新变量值
SET @age := 20;
# 查看变量值
SELECT @age;
局部变量
局部变量声明语法
DECLATE 变量名 类型 [DEFAULT 值];
类型:MySQL支持的数据类型,如varchar。
局部变量赋值
SET 变量名=值;
SET 变量名:=值;
SELECT 变量名=值;
# 方式二
SELECT 字段名或表达式 INTO @变量名 FROM 表名;
使用
SELECT 变量名;
案例
# 声明一个用户变量(实际上就是全局变量)
SET @uname = '王五';
# 创建一个存储过程
DELIMITER $$
CREATE PROCEDURE proc2()
BEGIN
select @uname;
end $$
# 调用存储过程
call proc2(); # 结果输出 “王五"
用户变量与局部变量对比
作用域 | 定义位置 | 语法 | |
---|---|---|---|
用户变量 | 当前会话 | 会话任何地方 | 加@符号,不指定类型 |
局部变量 | 定义在cegin end之间 | beging end的第一句话 | 不加@符号,需要指定类型 |
2020-11-07
请登录后再评论