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 相关文章推荐
Idea连接MySQL数据库出现中文乱码的问题
Apr 14 MySQL
MySQL Router的安装部署
Apr 24 MySQL
正确使用MySQL update语句
May 26 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
MySQL 服务和数据库管理
Nov 11 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
Jan 22 MySQL
Pycharm远程调试和MySQL数据库授权问题
Mar 18 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
排查MySQL生产环境索引没有效果
Apr 11 MySQL
mysql性能优化以及配置连接参数设置
May 06 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
May 30 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
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
javascript天然的迭代器
2010/10/29 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
剖析Python的Twisted框架的核心特性
2016/05/25 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
python 把列表转化为字符串的方法
2018/10/23 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
python将list转为matrix的方法
2018/12/12 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
车间操作工岗位职责
2013/12/19 职场文书
员工拓展培训方案
2014/02/15 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
创业计划书之酒厂
2019/10/14 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers