求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 

mysql教程
MySQL快速学习入门
MySQL是什么
MySQL安装
MySQL示例数据库
MySQL导入示例数据库
MySQL基础教程
MySQL查询数据
MySQL WHERE语句
MySQL插入数据
MySQL更新表数据
MySQL删除表数据
MySQL创建与删除数据库
MySQL创建表
MySQL修改表结构
MySQL重命名表
MySQL数据类型
高级部分
MySQL技巧
MySQL存储过程
MySQL视图
MySQL触发器
MySQL管理
MySQL全文搜索
MySQL函数
应用程序连接
MySQL+Node.js连接和操作
Python+MySQL连接和操作
 
 

MySQL变量
626 次浏览
4次  

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

MySQL用户定义变量简介

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

要创建用户定义的变量,请使用格式@variable_name,其中variable_name由字母数字字符组成。 用户自定义变量的最大长度为64个字符(MySQL 5.7.5之前的版本)

用户定义的变量不区分大小写。 这意味着@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变量示例

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

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

执行上面查询语句,得到以下结果 -

mysql> SELECT
@msrp:=MAX(msrp)
FROM
products;
+------------------+
| @msrp:=MAX(msrp) |
+------------------+
| 214.30 |
+------------------+
1 row in set
mysql> select @msrp as max_price ;
+-----------+
| max_price |
+-----------+
| 214.30 |
+-----------+
1 row in set

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

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

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

SELECT @id:=LAST_INSERT_ID();

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

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

执行上面语句,得到以下结果 -

+---------------------+
| @buyPrice:=buyprice |
+---------------------+
| 95.34 |
| 95.59 |
| 98.30 |
| 98.58 |
| 101.51 |
| 103.42 |
+---------------------+
6 rows in set

接下来,查询上面变量(@buyprice)的值,结果如下所示 -

mysql> SELECT @buyprice;
+-----------+
| @buyprice |
+-----------+
| 103.42 |
+-----------+
1 row in set

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


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



626 次浏览
4次
 捐助