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数据库并展示在前端页面的实现代码
May 02 MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
May 08 MySQL
MySQL 可扩展设计的基本原则
May 14 MySQL
MySQL中distinct和count(*)的使用方法比较
May 26 MySQL
MySQL8.0无法启动3534的解决方法
Jun 03 MySQL
Mysql数据库按时间点恢复实战记录
Jun 30 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 MySQL
了解MySQL查询语句执行过程(5大组件)
Aug 14 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 MySQL
Mysql的Table doesn't exist问题及解决
Dec 24 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
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
php curl模拟post提交数据示例
2013/12/31 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python实现的最近最少使用算法
2015/07/10 Python
python实现多线程抓取知乎用户
2016/12/12 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
python实现名片管理器的示例代码
2019/12/17 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
基于Python的OCR实现示例
2020/04/03 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
python如何调用字典的key
2020/05/25 Python
高校毕业生自我鉴定
2013/10/27 职场文书
公开承诺书格式
2014/05/21 职场文书
在校实习生求职信
2014/06/18 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
党员争先创优承诺书
2015/01/20 职场文书
学生会干部任命书
2015/09/21 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript
python函数的两种嵌套方法使用
2022/04/02 Python
Windows server 2012搭建FTP服务器
2022/04/29 Servers