MySQL详细讲解变量variables的用法


Posted in MySQL onJune 21, 2022

变量 variables

MySQL本质是一种编程语言

1、系统变量

对所有用户客户端都有效

1.1、查看系统变量

1、方式一

show variables [like 'pattern'];

示例

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+

2、方式二:

使用select查询变量的数据值

select @@变量名;

示例

select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+

1.2、修改系统变量

1、局部修改(会话级别)

-- 只针对当前客户端当次连接有效
set 变量名 = 值;
-- eg:
set autocommit = 'off';
show variables like 'autocommit';

2、全局修改

-- 所有客户端,都有效
set global 变量名 = 值;
set @@global.变量名 = 值;
-- eg:
set global autocommit = 'off';

注意,全局修改之后,重启客户端生效

2、会话变量

也称为用户变量,设置的变量,只针对当前用户使用的客户端生效

-- 定义用户变量
set @变量名 = 值;
set @age = 23;

mysql中没有比较符号 == ,使用的是 =;
为了避免分不清是赋值还是比较,赋值使用:=

set @变量名 := 值;
set @name := 'Tom';

mysql允许将数据从表中取出存储到变量中,只能是一行数据

-- 1、赋值且查看赋值过程
select @变量1 := 字段1, @变量2 := 字段2 from 表 where 条件
select @name := name, @age := age from my_student limit 1;
+---------------+-------------+
| @name := name | @age := age |
+---------------+-------------+
| 刘备          |          18 |
+---------------+-------------+
--- 2、只赋值不看过程
select 字段1, 字段2 from 表 where 条件 into @变量1, @变量2;
select name, age from my_student limit 1 into @name, @age;

查看变量

select @变量名
mysql> select @name, @age;
+--------+------+
| @name  | @age |
+--------+------+
| 刘备   |   18 |
+--------+------+

3、局部变量

作用范围在begin到end语句块之间,在该语句块里设置的变量

  • declare语句用于定义局部变量
  • 局部变量 declare语句出现在begin到end语句块之间

声明语法

declare 变量名 数据类型 [属性];

4、变量作用域

变量能够使用的区域范围

4.1、局部作用域

declare 关键字声明 (结构体中使用:函数/存储过程/触发器)

declare关键字声明的变量没有任何符号修饰,就是普通字符串,如果再外部访问该变量,系统会自动认为是字段

4.2、会话作用域

用户定义的,使用@符号定义的变量,使用set关键字

会话作用域,当次连接有效只要再本连接中,任何地方都可以使用(可以在结构内容,也可以跨库)

会话变量可以再函数内部使用

set @name = '张三';
create function get_name() returns char(4)
return @name;
select get_name();
+------------+
| get_name() |
+------------+
| 张三       |
+------------+

会话变量可以跨库

use mydatabase2;
mysql> select @name;
+--------+
| @name  |
+--------+
| 张三   |
+--------+

4.3、全局作用域

所有的客户端,所有的连接都有效,需要使用全局符号来定义

set global 变量名 = 值;
set @@global.变量名 = 值;

通常,在sql编程的时候,不会使用自定义变量来控制全局,一般定义会话变量或者结构中使用局部变量来解决问题

到此这篇关于MySQL详细讲解变量variables的用法的文章就介绍到这了,更多相关MySQL variables内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

MySQL 相关文章推荐
mysql优化
Apr 06 MySQL
Mysql MVCC机制原理详解
Apr 20 MySQL
详解MySQL 联合查询优化机制
May 10 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
浅析MySQL如何实现事务隔离
Jun 26 MySQL
mysql脏页是什么
Jul 26 MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 MySQL
MySQL数据库完全卸载的方法
Mar 03 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
mysql性能优化以及配置连接参数设置
May 06 MySQL
MySql数据库触发器使用教程
Jun 01 MySQL
mysql sql常用语句大全
Jun 21 #MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 #MySQL
mysql幻读详解实例以及解决办法
Jun 16 #MySQL
mysql数据库隔离级别详解
Jun 16 #MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 #MySQL
MySQL数据库之内置函数和自定义函数 function
Jun 16 #MySQL
MySQL数据库之存储过程 procedure
Jun 16 #MySQL
You might like
PHP callback函数使用方法和注意事项
2015/01/23 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
python 3利用BeautifulSoup抓取div标签的方法示例
2017/05/28 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
Python3数字求和的实例
2019/02/19 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
领导的自我鉴定
2013/12/28 职场文书
毕业设计计划书
2014/01/09 职场文书
电子商务专业求职信
2014/03/08 职场文书
企业活动策划方案
2014/06/02 职场文书
安全月宣传标语
2014/10/07 职场文书
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python
css3 文字断裂效果
2022/04/22 HTML / CSS