变量的使用场景(变量使用总结分析)

lxf2023-11-08 05:30:01

bitsCN.com

set语句的学习:

用select定义用户变量的实践

将以下语句更改为select形式:

set @VAR=(从罚金中选择sum(amount));

我的修改:

select @VAR:=(从罚金中选择sum(金额));

我可以这样改,虽然有可能。但是,对比书上的答案,我发现这种方式太蹩脚了。说明select定义的变量的本质没有很好的理解。

在select中,发现有一个用户变量,如果没有定义,就会初始化。

select子句的原始方式完全不受影响。仅添加用户变量。因此,select子句仍按原来的方式使用。例如:从养老金中选择sum(金额)。只需添加变量。

the:select @ var:= sum(amount)from pensions。

将sum(amount)的结果赋给变量@VAR:。变量前面有一个select,所以用户只显示变量。

注释部分:mysql变量的术语分类;

1.用户变量:以“@”开头,采用“@变量名”的形式

用户变量绑定到mysql客户端,设置的变量只对当前用户使用的客户端生效。

2.全局变量:定义时,它以以下两种形式出现:set GLOBAL variable name或set @@global。

对所有客户有效。您必须拥有超级权限才能设置全局变量。

3.会话变量:仅对连接的客户端有效。

4.局部变量:动作范围在begin和end语句块之间。语句块中设置的变量

declare语句专用于定义局部变量。Set语句是设置不同类型的变量,包括会话变量和全局变量。

通俗理解术语的区别:

用户定义的变量称为用户变量。这样,会话变量和全局变量都可以是用户定义的变量。只是它们是对当前客户端有效还是对所有客户端有效的区别。因此,用户变量包括会话变量和全局变量。

局部变量和用户变量有两个区别:1 .用户变量以“@”开头。局部变量没有这个符号。2.不同地定义变量。用户变量使用set语句,局部变量使用declare语句定义3。范围。局部变量只在begin-end语句块之间有效。begin-end语句块运行后,局部变量消失。

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

使用memo时,如果set @var没有指定GLOBAL或SESSION,默认情况下将定义用户变量。

用户变量有两种定义方式:

1.“=”,如set @a =3,@a:=5。

2.":="。Select经常这样用。

总结:使用select和set设置变量的区别。Set可以用以上两种形式设置变量。Select只能以":= "的形式设置变量。

实践积累:mysql客户端退出后,用户变量会自动消失。然后我打开客户端,使用“select @ a;显示的更改值为空。描述,未定义的变量初始化为空& # 65279;

实践中的问题

设置常数对group_concat()配置的影响;

SET @@GROUP_CONCAT_MAX_LEN=4

手册中提到的设置语法如下:

SET[SESSION | GLOBAL]group _ concat _ max _ len = val;

以下两种形式可以达到同样的效果,但有什么区别呢?

设置@@global。GROUP _ CONCAT _ MAX _ LEN = 4;

Global可以省略,所以变成:SET @ @ GROUP _ CONCAT _ MAX _ LEN = 4;

2011.2.25

之前的理解不是很准确。现在,我将总结一下我所学到的。

mysql中变量的层次关系是:一般包括用户变量和系统变量。系统变量包括系统会话变量和系统全局变量。

这是我如何理解它们之间的区别:

因为用户变量是用户自定义变量,系统变量是mysql定义和维护的变量。因此,用户变量和系统变量的区别在于谁在管理这些变量。当mysql启动时,它将读取系统变量(这样做的目的是确定mysql运行在什么机制或模式下)。当前客户端退出后,系统会话变量和用户变量都会消失。两者的区别可以这样理解。虽然经常看到“set @@varible”这种形式改变系统变量的值,但并不涉及定义系统变量。用户变量可以自己定义(初始化)。系统变量只是改变值。

局部变量仅在begin-end语句块中定义和有效。它在执行到语句块后消失了。这种定义方式有明显的特点,使用declare语句。

为什么会看到“@ @变量名”和“变量名”形式的系统变量的使用?如何理解两种形式的区别?

理论上,有两种形式可以使用系统变量:1。符号“@ @”在它前面;2.该符号被省略。比如我会看下面这个表单:CURRENT_USER。但约定系统变量应该是“@ @变量名”的形式,即前面加“@ @”符号。

为什么会出现CURRENT_USER这种未签约的情况?阅读《SQL for MySQL开发者综合教程及参考》这本书来解释原因,从而与其他SQL产品保持一致。

作者hj714886063

bitsCN.com adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!