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 05 MySQL
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
MySQL查询学习之基础查询操作
May 08 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
MySQL官方导出工具mysqlpump的使用
May 21 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
May 25 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
MySQL 开窗函数
Feb 15 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
MySql分区类型及创建分区的方法
Apr 13 MySQL
MySQL创建管理子分区
Apr 13 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 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
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
总结Python编程中三条常用的技巧
2015/05/11 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
flask框架视图函数用法示例
2018/07/19 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
python的pip有什么用
2020/06/17 Python
服务中心夜班服务员岗位职责
2013/11/27 职场文书
自荐书格式
2013/12/01 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
护士演讲稿范文
2014/01/05 职场文书
浙江文明网签名寄语
2014/01/18 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
代理人委托书
2014/09/16 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
Python OpenCV实现图形检测示例详解
2022/04/08 Python
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android