前言
临时变量主要分为用户变量和会话变量
1. 用户变量
用户变量是特定于会话的,在单个会话内可以在多个语句中共享
- 以
@
符号开头 - 在 sql 语句中使用 set 语句或直接在查询中赋值
声明和赋值
set @var_name = value; -- 或者 select @var_name := value;
使用
select @var_name;
注意事项如下:
- 在声明时不需要指定数据类型,mysql 会自动根据赋值的内容推断类型
- 在 sql 语句中区分大小写
- 声明用户变量时没有赋值,它们的值将为 null
- 在查询中,用户变量会根据查询的执行顺序进行赋值和计算,容易引起不期望的结果,需要小心使用
简单赋值:
在查询中使用用户变量:
-- 创建示例表 create table sales ( id int auto_increment primary key, amount decimal(10, 2) ); -- 插入示例数据 insert into sales (amount) values (100.00), (200.00), (300.00); -- 使用用户变量计算累计总和 set @total = 0; select id, amount, @total := @total + amount as cumulative_total from sales;
截图如下:
2. 会话变量
会话变量也称为系统变量,整个会话期间保持有效
不过可以是全局的或会话特定的
设置会话变量:set session var_name = value;
设置全局变量:set global var_name = value;
查看会话变量:show variables like 'var_name';
注意事项:
- 会话变量仅在当前会话中有效,而全局变量在所有会话中有效,但必须有足够的权限来设置全局变量
- 设置会话变量时,应该确保其值是合理的,以避免对数据库性能产生负面影响
- 一些会话变量的更改可能会立即生效,而另一些可能需要重新启动服务器才能生效
示例 1:设置并查看会话变量
-- 设置会话变量 set session sql_mode = 'strict_trans_tables'; -- 查看会话变量 show variables like 'sql_mode';
截图如下:
示例 2:设置并查看全局变量
-- 设置全局变量 set global max_connections = 200; -- 查看全局变量 show variables like 'max_connections';
截图如下:
到此这篇关于mysql临时变量的具体使用的文章就介绍到这了,更多相关mysql临时变量内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论