求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   模型库  
会员   
 


AI 智能化软件测试方法与实践
5月23-24日 上海+在线



人工智能.机器学习TensorFlow
5月22-23日 北京



图数据库与知识图谱
5月22-23日 北京
 
 

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变量
673 次浏览
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元





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



673 次浏览
4次
 捐助