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 05 MySQL
如何使用Maxwell实时同步mysql数据
Apr 08 MySQL
解读MySQL的客户端和服务端协议
May 10 MySQL
mysql5.7使用binlog 恢复数据的方法
Jun 03 MySQL
Mysql 设置boolean类型的操作
Jun 04 MySQL
MySQL 全文检索的使用示例
Jun 07 MySQL
MySQL索引是啥?不懂就问
Jul 21 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 MySQL
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
Jan 22 MySQL
一次Mysql update sql不当引起的生产故障记录
Apr 01 MySQL
MySQL数据库 安全管理
May 06 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 array_walk() 数组函数
2011/07/12 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php以post形式发送xml的方法
2014/11/04 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
尝试在让script的type属性等于text/html
2013/01/15 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
原生js实现日期联动
2015/01/12 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
Python常用内置函数总结
2015/02/08 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
解决pycharm界面不能显示中文的问题
2018/05/23 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
法学毕业生自我鉴定
2014/01/31 职场文书
出纳员的岗位职责
2014/02/22 职场文书
可口可乐广告词
2014/03/20 职场文书
代办委托书怎样写
2014/04/08 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
技术转让协议书
2016/03/19 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL