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系列之一 MariaDB-server安装
Jul 02 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
MySQL表类型 存储引擎 的选择
Nov 11 MySQL
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
教你使用VS Code的MySQL扩展管理数据库的方法
Jan 22 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
一次Mysql update sql不当引起的生产故障记录
Apr 01 MySQL
MySql分区类型及创建分区的方法
Apr 13 MySQL
MySQL数据库 任意ip连接方法
May 20 MySQL
MySQL串行化隔离级别(间隙锁实现)
Jun 16 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
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
php生成二维码
2015/08/10 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
初学JavaScript第二章
2008/09/30 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
详解Python传入参数的几种方法
2019/05/16 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
电子商务专业自我鉴定
2013/12/18 职场文书
青春演讲稿范文
2014/05/08 职场文书
保护环境建议书300字
2014/05/13 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
期中考试复习计划
2015/01/19 职场文书
听证通知书
2015/04/24 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
MySQL 全文检索的使用示例
2021/06/07 MySQL
详解Java实践之建造者模式
2021/06/18 Java/Android