一、系统变量
系统创建的默认变量,mysql服务每次重启将会重置系统变量,如果想永久设置环境变量,需要修改配置文件
1. 全局变量 GLOBAL
在每一个会话下都有效
- 查看 系统全局变量
SHOW GLOBAL VARIABLES; -- 查看所有系统全局变量
SHOW SESSION VARIABLES LIKE '%date%'; -- 通过条件过滤需要的系统全局变量
SELECT @@GLOBAL.autocommit; -- 根据系统全局变量名查看值
- 修改 系统全局变量的值
SET @@GLOBAL.autocommit = 0; -- 根据系统全局变量名修改值,注意:如果是可读变量则不可修改,可修改my.ini配置进行修改
2. 会话变量 SESSION
仅在当前会话有效(会话:当前打开的mysql连接)
默认的系统变量是SESSION会话变量,可以省略 SESSION 关键词
- 查看 系统会话变量
SHOW SESSION VARIABLES; -- 查看所有系统会话变量
SHOW SESSION VARIABLES LIKE '%date%'; -- 通过条件过滤需要的系统会话变量
SELECT @@SESSION.autocommit; -- 根据系统会话变量名查看值
SHOW VARIABLES; -- 查看所有系统会话变量
SHOW VARIABLES LIKE '%date%'; -- 通过条件过滤需要的系统会话变量
SELECT @@autocommit; -- 根据系统会话变量名查看值
- 修改 系统会话变量的值
SET @@SESSION.autocommit = 0; -- 根据系统会话变量名修改值,如果是可读变量则不可修改,可修改my.ini配置进行修改
SET @@autocommit = 0; -- 根据系统会话变量名修改值,如果是可读变量则不可修改,可修改my.ini配置进行修改
二、自定义变量
1. 用户变量
仅在当前会话中有效(会话:当前打开的mysql连接)
- 创建/修改 自定义用户变量
-- 方式一:SET @变量名 = 变量值;
SET @a = 100;
-- 方式二:SET @变量名 := 变量值;
SET @b := 200;
-- 方式三:SELECT @变量名 := 变量值;
SELECT @c := 300;
-- 方式四:SELECT 变量值 into @变量名;
SELECT 900 INTO @d;
-- 方式五:将查询到的单个数据赋值给变量
SELECT username INTO @e FROM `user` WHERE id=1; -- 将查询到的单个数据赋值给变量
- 查看 自定义用户变量的值
-- 查看自定义全局变量
SELECT @a,@b,@c,@d,@e;
2. 局部变量
仅在当前会话的存储过程中的 BEGIN END 块中有效,变量名前可不加@符号
- 创建 自定义局部变量
语法:DECLARE 变量名 变量类型 DEFAULT 变量值;
-- 创建 MySQL 存储过程
CREATE PROCEDURE find_user()
BEGIN
DECLARE aaa INT DEFAULT 100; -- 创建局部变量
SET aaa := 999; -- 修改局部变量的值
SELECT aaa;
END;
CALL find_user() -- 调用 MySQL 存储过程,结果:999
- 修改 自定义局部变量
在当前会话的存储过程中的 BEGIN END 块中使用
-- 方式一:SET 变量名 = 变量值;
SET a = 100;
-- 方式二:SET 变量名 := 变量值;
SET b := 200;
-- 方式三:SELECT 变量名 := 变量值;
SELECT c := 300;
-- 方式四:SELECT 变量值 into 变量名;
SELECT 900 INTO d;
-- 方式五:将查询到的单个数据赋值给变量
SELECT username INTO e FROM `user` WHERE id=1; -- 将查询到的单个数据赋值给变量
网友评论