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获取所有分类的前N条记录
May 07 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
May 25 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
MySQL外键约束(FOREIGN KEY)案例讲解
Aug 23 MySQL
MySQL 数据类型详情
Nov 11 MySQL
mysql函数全面总结
Nov 11 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
Mysql排查分析慢sql之explain实战案例
Apr 19 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MySQL自定义函数及触发器
Aug 05 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中文分词的简单实现代码分享
2011/07/17 PHP
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
python super函数使用方法详解
2020/02/14 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
安全资料员岗位职责范本
2014/06/28 职场文书
小学安全汇报材料
2014/08/14 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
出国留学单位推荐信
2015/03/26 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
考研英语辞职信
2015/05/13 职场文书
法律意见书范文
2015/06/04 职场文书
北京青年观后感
2015/06/15 职场文书