MySQL变量定义(declare,set,@)使用实例讲解(转载)

本文深入讲解MySQL中的变量定义,包括用户变量、全局变量、会话变量和局部变量的使用方法和区别,通过实例演示如何使用declare和set进行变量定义。

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

MySQL变量定义(declare,set,@)使用实例讲解
变量在MySQL中会经常被使用,变量的使用方法是一个重要的知识点,特别是在定义条件这块比较重要。本文章向大家介绍MySQL用户变量使用实例,需要的朋友可以参考一下。

MySQL定义用户边框可以使用declare或set,本文档向大家介绍declare和set定义变量的实例及区别。

MySQL变量的种类

  1. 用户变量:以“@”开始,形式为“@变量名”。用户变量跟MySQL客户端是绑定的,设置的变量,只对当前用户使用的客户端生效
  2. 全局变量:定义时,以如下两种形式出现,set global 变量名 或者 set@global变量名,对所有客户端生效。只有具有super权限才可以设置全局变量
  3. 会话变量:只对连接的客户端生效。
  4. 局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量。declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量

通俗理解术语之间的区别:
用户定义的变量就叫用户变量。这样理解的话,会话变量和全局变量都可以是用户定义的变量。只是他们是对当前客户端生效还是对所有客户端生效的区别了。所以,用户变量包括了会话变量和全局变量。
局部变量与用户变量的区分在于两点:
1.用户变量是以“@”开头的。局部变量没有这个符号。
2.定义变量不同。用户变量使用set语句,局部变量使用declare语句定义;
3.作用范围:局部变量只在begin-end语句块之间有效。在begin-end语句块运行完之后,局部变量就消失了。

   所以,最后他们之间的层级关系是:变量包括局部变量和用户变量。用户变量包括会话变量和全局变量。

MySQL declare定义变量
MySQL declare 用于定义变量,在存储和函数中通过declare定义变量在begin-end中,且在语句之前。并且可以通过重复定义多个变量

declare变量的作用范围同编程里面类似,在这里一般是在对应的begin和end之间。
在end之后这个变量就没有作用了,不能使用了,这个同编程一样。
注意:declare定义的变量名不能带“@”符号,MySQL在这点做的实在不够直观,往往变量名会被错成参数或者字段名。

MySQL存储过程中使用declare定义变量,实例如下:

DELIMITER $$
DROP PROCEDURE IF EXISTS insert_ten_rows ;
CREATE PROCEDURE inser_ten_rows()
	BEIGN
		DECLARE crs INT DEFAULT 0 ;
		WHILE crs < 10 DO
			INSERT INTO continent(name) VALUSE('cont'+crs);
			SET crs = crs + 1;
		END WHILE;
	END
$$
DELIMIER ;

MySQL SET定义变量
MySQL set也可以用来定义变量,定义变量的形式是以@开始,如:“@变量名”。
MySQL set定义变量实例:

	SET @t1=0, @t2=1, @t3=2;
	select @t1;
@t1
0

复杂一点的实例:

SET @t1: = (@t2:=1) + @t3:=4, @t1, @t2, @t3;

在这里插入图片描述
MySQL declare 和 set 定义变量的区别
MySQL declare和set定义变量,除了一个不加@和一个加@这个区别之外,还有以下区别:
1、declare 用来定义局部变量;
2、@ 用来定义会话变量;

declare变量的作用范围同编程里面类似,在这里一般是对应的begin和end之间。
在end之后这个变量就没有作用了,不能使用了,这个同编程是一样的。

另外有种变量叫做会话变量(session variable),也叫做用户定义的变量(user defined variable)。这种变量要在变量名称前面加上 @ 符号,叫做会话变量,代表整个会话过程他都是有作用的,这个有点类似于全局变量一样。这种变量用途比较广,因为只要在一个会话内(就是某个应用的一个连接过程中),这个变量可以在被调用的存储过程或者代码之间共享数据。(转载地址http://www.manongjc.com/article/1441.html)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值