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
JDBC连接的六步实例代码(与mysql连接)
May 12 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
MySQL连接查询你真的学会了吗?
Jun 02 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
MySQL系列之开篇 MySQL关系型数据库基础概念
Jul 02 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 MySQL
MySQL 字符集 character
May 04 MySQL
Mysql中@和@@符号的详细使用指南
Jun 05 MySQL
MySQL实现用逗号进行拼接、以逗号进行分割
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
PHP程序员编程注意事项
2008/04/10 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
python如何变换环境
2020/07/21 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
党员学习十八大感想
2014/01/17 职场文书
幼儿教师国培感言
2014/02/19 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
销售员态度差检讨书
2014/10/26 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
Python实现日志实时监测的示例详解
2022/04/06 Python
浅谈Redis的事件驱动模型
2022/05/30 Redis