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效率优化定位较低sql的两种方式
May 26 MySQL
MySQL注入基础练习
May 30 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
MySQL 十大常用字符串函数详解
Jun 30 MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
MySQL索引是啥?不懂就问
Jul 21 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
MySQL创建管理子分区
Apr 13 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
MySQL事务的隔离级别详情
Jul 15 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
laravel学习教程之关联模型
2016/07/30 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
webpack多页面开发实践
2017/12/18 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
详解Python中for循环的使用方法
2015/05/14 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
Python中的引用知识点总结
2019/05/20 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
音乐学个人的自荐书范文
2013/11/26 职场文书
清洁工岗位职责
2014/01/29 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
家装业务员岗位职责
2015/04/03 职场文书
2015年度物流工作总结
2015/04/30 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
python办公自动化之excel的操作
2021/05/23 Python
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL