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表的增删改查基础教程
Apr 07 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
详解MySQL连接挂死的原因
May 18 MySQL
MySQL 8.0 Online DDL快速加列的相关总结
Jun 02 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
mysql如何查询连续记录
May 11 MySQL
MySQL中JOIN连接的基本用法实例
Jun 05 MySQL
MySQL transaction事务安全示例讲解
Jun 21 MySQL
MySQL表字段数量限制及行大小限制详情
Jul 23 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抽象类 介绍
2012/06/13 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
[48:00]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第二场 11.04
2020/11/04 DOTA
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
wxPython色环电阻计算器
2019/11/18 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
公务员职务工作的自我评价
2013/11/01 职场文书
办理生育手续介绍信
2014/01/14 职场文书
我的中国梦口号
2014/06/16 职场文书
毕业大学生自荐信
2014/06/17 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
工作年限证明模板
2014/11/01 职场文书
老公保证书
2015/01/17 职场文书
八一建军节主持词
2015/07/01 职场文书
培训感想范文
2015/08/07 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书