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 infobright的安装步骤
Apr 07 MySQL
MySQL创建索引需要了解的
Apr 08 MySQL
解决MySQL存储时间出现不一致的问题
Apr 28 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
Navicat连接MySQL错误描述分析
Jun 02 MySQL
MySQL系列之十二 备份与恢复
Jul 02 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 MySQL
MySQL创建管理HASH分区
Apr 13 MySQL
MySQL count(*)统计总数问题汇总
Sep 23 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
ADODB类使用
2006/11/25 PHP
php桌面中心(三) 修改数据库
2007/03/11 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
php页面防重复提交方法总结
2013/11/25 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
javascript实现的网站访问量统计代码
2015/12/20 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
C#面试题
2016/05/06 面试题
大学生军训自我评价分享
2013/11/09 职场文书
餐饮主管岗位职责
2013/12/10 职场文书
机关职员工作检讨书
2014/10/23 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
师范生见习自我总结
2015/06/23 职场文书