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学习笔记之事务隔离级别详解
May 12 MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 MySQL
MySQL中InnoDB存储引擎的锁的基本使用教程
May 26 MySQL
分析mysql中一条SQL查询语句是如何执行的
Jun 21 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
一条慢SQL语句引发的改造之路
Mar 16 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
May 30 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
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的图形函数中显示汉字
2006/10/09 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
两个开源的Php输出Excel文件类
2010/02/08 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
vue实例的选项总结
2020/06/09 Javascript
python人人网登录应用实例
2014/09/26 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
护理毕业生自荐信范文
2013/12/22 职场文书
实习生工作证明范本
2014/09/14 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android