MySQL学习记录:第六章 变量

本文介绍了MySQL中的变量类型,包括系统变量中的全局变量和会话变量,以及自定义变量中的用户变量和局部变量。详细阐述了每种变量的作用域、查看、赋值方法,并通过案例展示了用户变量和局部变量的使用区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第六章 变量

/*
分类
系统变量: 全局变量|会话变量
自定义变量:用户变量| 局部变量
*/

一、系统变量:全局变量、会话变量

/*
系统变量:变量由系统提供,不是用户定义,属于服务器层面,必须拥有super权限才能为系统变量赋值

注意
若是全局级别,则需要添加GLOBAL
若是会话级别,则需要加SESSION
若是不写,默认为SESSION

使用语法

1、查看所有的系统变量

SHOW GLOBAL|【SESSION】 VARIABLES;

2、查看满足条件的部分系统变量

SHOW GLOBAL|【SESSION】 VARIABLES LIKE '%CHAR%';

3、查看指定的某个系统变量的值

SELECT @@GLOBAL|【SESSION】.系统变量名;

4、为某个系统变量赋值

方式一:

SET GLOBAL|【SESSION】.系统变量名=值;

方式二:

SET @@GLOBAL|【SESSION】.系统变量名=值;
SET @@变量名=值;

*/

1、全局变量

/*
作用域:服务器每次启动将为所有的全局变量赋初值,针对与所有会话(连接)有效,但不能跨重启
*/

(1)查看所有的全局变量
SHOW GLOBAL VARIABLES;
(2)查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%CHAR%';
(3)查看指定的全局变量的值
SELECT @@GLOBAL.autocommit;
(4)为某个指定的全局变量赋值
SET @@GLOBAL.autocommit=0;

2、会话变量

/*
作用域:仅仅针对于当前会话(连接)有效
*/

(1)查看所有的全局变量
SHOW SESSION VARIABLES;
SHOW VARIABLES;
(2)查看满足条件的部分系统变量
SHOW SESSION VARIABLES LIKE '%CHAR%';
SHOW VARIABLES LIKE '%CHAR%';
(3)查看指定的全局变量的值
SELECT @@SESSION.TRANSACTION_ISOLATION;
SELECT @@TRANSACTION_ISOLATION;
(4)为某个指定的全局变量赋值
SET @@SESSION.TRANSACTION_ISOLATION ='REPEATABLE-READ';

SET SESSION TRANSACTION_ISOLATION ='REPEATABLE-READ';

SET @@TRANSACTION_ISOLATION ='read-uncommitted';#语法不报错,但结果没成功

二、自定义变量:用户变量、局部变量

/*
自定义变量:变量由用户自定义的

使用步骤
1、声明
2、赋值(
3、使用(查看、比较、运算等)
*/

1、用户变量

/*
作用域:针对于当前会话(连接)有效,等同于会话变量的作用域
应用在任何地方,即begin end里面或begin end

使用步骤

1、声明并初始化:
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;

2、赋值(更新用户变量的值):操作符=或:=

方式一:通过set或select

SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;

方式二:通过select into

SELECT 字段 INTO 变量名 FROM 表;

3、使用(查看、比较、运算等)

查看:SELECT @用户变量名;

*/

(1)声明并初始化
SET @count=1;
(2)赋值
SELECT COUNT(*) INTO @count FROM employees;
(3)使用-查看用户变量的值
SELECT @count;

2、局部变量

/*
作用域:仅仅在定义它的begin end中有效

应用在begin end中第一句话!!!

使用步骤

1、声明

DECLARE 变量名 类型;
declare 变量名 类型 DEFAULT 值;

2、赋值或更新

方式一:通过set或select

SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;

方式二:通过select into

SELECT 字段 INTO 局部变量名 FROM 表;

3、使用

查看:SELECT 局部变量名;

*/

3、对比用户变量和局部变量

/*

作用域定义和使用的位置语法
用户变量当前会话会话中的任何地方必须加@符号,不用限定类型
局部变量begin end中只能在begin end中,且为第一句话一般不加@符号,需要限定类型

*/

#案例:声明两变量并赋值,求和并打印

(1)用户变量

SET @n=1;
SET @m:=2;
SELECT @sum:=@n+@m;
SELECT @sum;

(2)局部变量:会报错,必须放在begin end的第一局

DECLARE n INT DEFAULT 1;
DECLARE m INT DEFAULT 1;
DECLARE sum INT;
SET sum = n+m;
SELECT sum;

====================================================

分享,多担待。望有帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值