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 Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
MySQL COUNT函数的使用与优化
May 10 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
MySQL 全文检索的使用示例
Jun 07 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
SQL实现LeetCode(176.第二高薪水)
Aug 04 MySQL
MySQL空间数据存储及函数
Sep 25 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
一条 SQL 语句执行过程
Mar 17 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
详细介绍MySQL中limit和offset的用法
May 06 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 在线打包_支持子目录
2008/06/28 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
webpack4简单入门实例
2018/09/06 Javascript
express 项目分层实践详解
2018/12/10 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
JS实现滑动导航效果
2020/01/14 Javascript
python动态网页批量爬取
2016/02/14 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
使用python实现ANN
2017/12/20 Python
使用python进行拆分大文件的方法
2018/12/10 Python
学校安全工作制度
2014/01/19 职场文书
党员批评与自我批评
2014/02/12 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
面试感谢信范文
2015/01/22 职场文书
2015年大学生工作总结
2015/04/21 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
MySQL的安装与配置详细教程
2021/06/26 MySQL
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB