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 06 MySQL
MySQL 可扩展设计的基本原则
May 14 MySQL
详解MySQL中的pid与socket
Jun 15 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
MySql 缓存查询原理与缓存监控和索引监控介绍
Jul 02 MySQL
MySQL面试题讲解之如何设置Hash索引
Nov 01 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
千万级用户系统SQL调优实战分享
Mar 03 MySQL
MySQL创建管理HASH分区
Apr 13 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
mysql查看表结构的三种方法总结
Jul 07 MySQL
MySQL提升大量数据查询效率的优化神器
Jul 07 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时间戳与日期之间转换的实例介绍
2013/04/19 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
PHP7 list() 函数修改
2021/03/09 PHP
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
JS实现DOM删除节点操作示例
2018/04/04 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
在python中的socket模块使用代理实例
2014/05/29 Python
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
Python实现图片尺寸缩放脚本
2018/03/10 Python
python按照多个条件排序的方法
2019/02/08 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
光电信息专业应届生求职信
2013/10/07 职场文书
学生会部长竞聘书
2014/03/31 职场文书
教师四风问题整改措施
2014/09/25 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
优秀党支部申报材料
2014/12/24 职场文书