如何在 mysql 中声明和使用变量-ag捕鱼王app官网

当前位置:ag捕鱼王app官网 > > 数据库 > mysql >

如何在 mysql 中声明和使用变量

作者:迹忆客 最近更新:2024/03/26 浏览次数:

在这篇教程文章中,我们将解释如何在 mysql 数据库的 sql 代码中声明变量。

在 sql 脚本上,可以在执行一系列命令期间使用变量存储值,并使用它们代替文字。


mysql 中的用户定义变量

mysql 可以识别不同类型的变量。第一种类型是用户定义的变量,由作为前缀的@符号标识。在 mysql 中,你可以访问用户定义的变量,而无需事先声明或初始化它们。如果你这样做,当初始化时,会给变量分配一个 null 值。例如,如果你对一个变量使用 select,而没有给它赋值,就像在这种情况下。

select@somevariable;

mysql 会返回一个 null 值。


初始化用户定义的变量

要初始化一个用户定义的变量,需要使用 setselect 语句。你可以一次初始化许多变量,用逗号分隔每个赋值语句,如下所示。

set@firstvar=1,@secondvar=2;

一旦你给一个变量赋值,它将根据给定的值有一个类型。在前面的例子中,@firstvar@secondvar 的类型是 int

用户定义的变量的生命周期在会话处于活动状态时就会持续,而且它对其他会话是不可见的。一旦会话关闭,该变量就会消失。

有 5 种数据类型可以分配给用户自定义变量。

  • 字符串(二进制或非二进制
  • 整数
  • 小数
  • 浮点
  • null,它可以与任何类型相关联。

要给一个变量赋值,可以使用符号 =:=。下面两个语句具有相同的效果。

set@myintvar=1;set@myintvar:=1;

select 语句中使用变量用作字段

变量可以成为 select 语句的字段列表的一部分。当你在选择中指定字段时,你可以混合变量和字段名,就像这个例子一样。

set@indexvar:=1;select@indexvar,isbnfrombooks;

在 mysql 中声明本地变量

局部变量不需要在其名称中使用@前缀,但在使用之前必须声明它们。要声明一个局部变量,可以使用 declare 语句,或者在 stored procedure 声明中使用它作为参数。

当你声明一个局部变量时,可以选择给它分配一个默认值。如果你不分配任何默认值,那么变量将被初始化为一个 null 值。

每个变量都生活在一个范围内,由包含其声明的 begin ... end 块限定。

下面的例子说明了使用局部变量的两种不同方式:作为过程参数和作为过程内部变量。

delimiter$$createproceduregetupdatedprices(itemcountint)begindeclarefactordecimal(5,2);setfactor:=3.45;selectpartno,description,itemcount*factor*listpricefromcatalogue;end$$delimiter;

在前面的例子中,变量 itemcount 被用作参数,将值传递给过程。之后在 select 语句中使用该变量来乘以从表中获得的 listprice 字段。本地变量 factor 用于存储一个小数值,用来乘以得到的价格。


在 mysql 中声明系统变量

还有第三种类型的变量称为系统变量,用于存储影响单个客户端连接的值(session 变量)或影响整个服务器操作的值(global 变量)。

系统变量通常在服务器启动时设置。要做到这一点,你可以使用命令行或在选项文件中包含 set 语句。但是它们的值可以在 sql 脚本中进行修改。

系统变量可以使用双@符号作为前缀,或者在 set 语句中使用 globalsession 字样来识别。区分 globalsession 系统变量的另一种方法是使用第二个前缀:globalsession。下面是一些如何为系统变量赋值的例子。

-- alternative ways to set session system variables:
setinteractive_timeout=30000;setsessioninteractive_timeout=30000;set@@interactive_timeout=30000;set@@local.interactive_timeout=30000;-- alternative ways to set global system variables:
set@@global.interactive_timeout=30000;setglobalinteractive_timeout=30000;

要查看会话中或服务器中使用的系统变量,可以使用 show variables 语句。如果你想得到一些特定变量的值,你可以添加一个比较运算符来过滤这个列表。例如:

showvariableslike'%timeout%'

上一篇:

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何从 pandas 的日期时间列中提取月份和年份

发布时间:2024/04/23 浏览次数:160 分类:python

我们可以分别使用 dt.year()和 dt.month()方法从 datetime 列中提取出年和蛾。我们还可以使用 pandas.datetimeindex.month 以及 pandas.datetimeindex.year 和 strftime()方法提取年份和月份。

如何获取 pandas dataframe 的行数

发布时间:2024/04/23 浏览次数:71 分类:python

本教程介绍如何通过使用 shape,len()来获取 pandas dataframe 的行数,以及有多少行元素满足条件。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图