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 16 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
MySql存储过程之逻辑判断和条件控制
May 26 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
MySQL一些常用高级SQL语句
Jul 03 MySQL
SQL之各种join小结详细讲解
Aug 04 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
面试提问mysql一张表到底能存多少数据
Mar 13 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
May 06 MySQL
讲解MySQL增删改操作
May 06 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
用PHP生成html分页列表的代码
2007/03/18 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
php防止sql注入简单分析
2015/03/18 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
Javascript 继承机制的实现
2009/08/12 Javascript
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
Python中函数的用法实例教程
2014/09/08 Python
详解Python中dict与set的使用
2015/08/10 Python
python基础知识小结之集合
2015/11/25 Python
python决策树之C4.5算法详解
2017/12/20 Python
Python 打印中文字符的三种方法
2018/08/14 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
计算机求职信
2013/12/01 职场文书
情况说明书格式范文
2014/05/06 职场文书
请假条应该怎么写?
2019/06/24 职场文书