MySQL变量

时间:2019-11-20 08:52:33  来源:igfitidea点击:

简介:在本教程中,您将学习如何在SQL语句中使用MySQL用户定义的变量。

MySQL用户定义变量简介

有时,您希望将值从一个SQL语句传递给另一个SQL语句。
为此,将值存储在第一个语句的MySQL用户定义变量中,并在后续语句中引用它。

要创建用户定义的变量,请使用格式@variable_name,其中variable_name由字母数字字符组成。
从MySQL 5.7.5开始,用户定义变量的最大长度为64个字符。

用户定义的变量不区分大小写。
这意味着@id和@ID相同。

您可以将用户定义的变量分配给某些数据类型,例如整数,浮点数,十进制,字符串或NULL。

一个客户端定义的用户定义变量对其他客户端不可见。
换句话说,用户定义的变量是特定于会话的。

请注意,用户定义的变量是MySQL特定于SQL标准的扩展。
它们可能在其他数据库系统中不可用。

MySQL变量赋值

有两种方法将值分配给用户定义的变量。

第一种方法是使用SET语句,如下所示:

SET @variable_name := value;

您可以在SET语句中使用:=或=作为赋值运算符。
例如,该语句将数字100分配给变量@counter。

SET @counter := 100;

将值分配给变量的第二种方法是使用SELECT语句。
在这种情况下,必须使用:=赋值运算符,因为在SELECT语句中,MySQL将=运算符视为相等运算符。

SELECT @variable_name := value;

分配后,可以在允许表达式的后续语句中使用变量,例如在WHERE子句,INSERT或UPDATE语句中。

MySQL变量的例子

以下语句获取产品表中最昂贵的产品,并将价格分配给用户定义的变量@msrp:

SELECT 
    @msrp:=MAX(msrp)
FROM
    products;

以下语句使用@msrp变量查询最昂贵的产品的信息。

SELECT 
    productCode, productName, productLine, msrp
FROM
    products
WHERE
    msrp = @msrp;

有时,您想在表中插入一行,获取最后一个插入ID,然后将其用于将数据插入到另一个表中。
在这种情况下,您可以使用用户定义的变量来存储由AUTO_INCREMENT列生成的最新ID,如下所示。

SELECT @id:=LAST_INSERT_ID();

用户定义的变量只能包含一个值。
如果SELECT语句返回多个值,则变量将采用结果中最后一行的值。

SELECT 
    @buyPrice:=buyprice
FROM
    products
WHERE
    buyprice > 95
ORDER BY buyprice;
SELECT @buyprice;

在本教程中,我们向您展示了如何在SQL语句中使用MySQL变量在会话中的语句之间传递数据。