Skip to content

MySQL - 算术运算符

MySQL 中的算术运算符用于对数值进行数学计算。这些运算符可以在 SELECT 语句中即时计算值,也可以在 WHERE 和 UPDATE 子句中根据计算结果筛选或修改数据。

以下是 MySQL 中主要的算术运算符列表:

运算符名称描述
+加法将两个数值相加。
-减法从左侧操作数中减去右侧操作数。
*乘法将两个数值相乘。
/除法将左侧操作数除以右侧操作数。返回一个浮点数。
DIV整除执行除法并丢弃小数部分,返回一个整数。
%取模返回除法的整数余数。A % B 等同于 MOD(A,B)。
-一元减号改变操作数的符号。

让我们创建一个示例 products 表来演示这些运算符在实际场景中如何工作。

CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2),
stock_quantity INT
);
INSERT INTO products VALUES
(1, 'Laptop', 1200.50, 50),
(2, 'Mouse', 25.00, 153),
(3, 'Keyboard', 75.75, 99);

计算折扣价格。

SELECT name, price, price - 10.00 AS discounted_price FROM products;

计算每种产品的总库存价值。

SELECT name, price * stock_quantity AS inventory_value FROM products;

/ 运算符执行浮点数除法,而 DIV 执行整数除法。

-- 浮点数除法
SELECT 10 / 4; -- 结果: 2.5000
-- 整除
SELECT 10 DIV 4; -- 结果: 2

一个实际例子:计算当前库存可以分成多少个“10 个一包”的捆。

SELECT name, stock_quantity, stock_quantity DIV 10 AS packs_of_10 FROM products;

取模运算符对于求余数很有用。一个常见的用例是判断一个数字是奇数还是偶数。

SELECT 15 % 4; -- 结果: 3 (因为 15 = 3*4 + 3)
-- 找出所有库存数量为奇数的产品
SELECT name, stock_quantity FROM products WHERE stock_quantity % 2 != 0;

MySQL 遵循标准的运算顺序。乘法(*)、除法(/、DIV)和取模(%)的优先级高于加法(+)和减法(-)。

考虑这个查询:

SELECT 10 + 5 * 2; -- 结果: 20

在上面的查询中,5 * 2 先被计算(结果为 10),然后 10 + 10 被计算。要覆盖默认优先级,请使用括号 ()。

SELECT (10 + 5) * 2; -- 结果: 30

即使并非严格必要,使用括号也能使您的计算更易于阅读和理解。