MySQL数据库(28):变量 variables

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MySQL数据库(28):变量 variables

变量 variables

MySQL本质是一种编程语言

1、系统变量

对所有用户客户端都有效

1.1、查看系统变量

1、方式一

show variables [like 'pattern'];
• 1

示例

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+

2、方式二:

使用select查询变量的数据值

select @@变量名;
• 1
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 变量名 数据类型 [属性];

1

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.变量名 = 值;


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 自然语言处理 关系型数据库
MySQL 自定义变量并声明字符编码
MySQL 自定义变量并声明字符编码
448 1
|
存储 关系型数据库 MySQL
mysql 使用变量存储中间结果的写法
mysql 使用变量存储中间结果的写法
|
SQL 存储 Oracle
南大通用GBase 8s数据库游标变量解析:提升数据库操作效率
南大通用GBase 8s 数据库游标变量解析:提升数据库操作效率
|
存储 关系型数据库 MySQL
MySQL 8.0特性-自增变量的持久化
【11月更文挑战第8天】在 MySQL 8.0 之前,自增变量(`AUTO_INCREMENT`)的行为在服务器重启后可能会发生变化,导致意外结果。MySQL 8.0 引入了自增变量的持久化特性,将其信息存储在数据字典中,确保重启后的一致性。这提高了开发和管理的稳定性,减少了主键冲突和数据不一致的风险。默认情况下,MySQL 8.0 启用了这一特性,但在升级时需注意行为变化。
264 1
|
关系型数据库 MySQL 数据处理
企业级应用 mysql 日期函数变量,干货已整理
本文详细介绍了如何在MySQL8.0中使用DATE_FORMAT函数进行日期格式的转换,包括当日、昨日及不同时间段的数据获取,并提供了实际的ETL应用场景和注意事项,有助于提升数据处理的灵活性和一致性。
146 0
|
关系型数据库 MySQL
|
存储 SQL 关系型数据库
15. Mysql 变量的使用
15. Mysql 变量的使用
249 1
|
存储 关系型数据库 MySQL
【MySQL进阶之路 | 基础篇】变量
【MySQL进阶之路 | 基础篇】变量
|
存储 SQL 关系型数据库
MySQL数据库——存储过程-变量(系统变量、用户定义变量、局部变量)
MySQL数据库——存储过程-变量(系统变量、用户定义变量、局部变量)
1215 0
|
存储 关系型数据库 MySQL
Mysql存储过程查询结果赋值到变量
Mysql存储过程查询结果赋值到变量
333 0

推荐镜像

更多