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三值逻辑与NULL
May 19 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
解决MySQL Varchar 类型尾部空格的问题
Apr 06 MySQL
Mysql索引失效 数据库表中有索引还是查询很慢
May 15 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 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动态生成VRML网页
2006/10/09 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
json数据的列循环示例
2013/09/06 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
python常用函数与用法示例
2019/07/02 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
社会实践自我鉴定
2013/11/07 职场文书
求职简历的自我评价
2014/01/31 职场文书
综治目标管理责任书
2015/05/11 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
Redis实现短信验证码登录的示例代码
2022/06/14 Redis