MySQL 支持多种数学运算操作,可以直接在 SQL 查询中对数值字段或常量进行加减乘除、取余、幂运算等。这些操作适用于数据统计、计算列值、条件筛选等场景。
基本算术运算符
MySQL 提供了常见的算术运算符,可用于 SELECT、WHERE、UPDATE 等语句中:
+:加法,例如 SELECT 5 + 3; 返回 8 -:减法,例如 SELECT 10 - 4; 返回 6 *:乘法,例如 SELECT price * quantity FROM products; /:除法,例如 SELECT total / count FROM stats; % 或 MOD:取余,例如 SELECT 10 % 3; 返回 1注意:除数为 0 时返回 NULL,不会报错。
常用数学函数
除了基础运算,MySQL 内置了许多数学函数,便于复杂计算:
ROUND(x, d):将 x 四舍五入到 d 位小数,如 ROUND(3.14159, 2) 返回 3.14 FLOOR(x):向下取整,FLOOR(4.9) 返回 4 CEIL(x) 或 CEILING(x):向上取整,CEIL(4.1) 返回 5 ABS(x):返回绝对值,ABS(-10) 返回 10 POWER(x, y) 或 POW(x, y):x 的 y 次方,POW(2, 3) 返回 8 SQRT(x):开平方,SQRT(16) 返回 4 MOD(x, y):取模运算,同 %在查询中使用数学运算
可以在 SELECT 子句中直接计算新字段值:
SELECT price, quantity, price * quantity AS total_cost, ROUND(price * 0.13, 2) AS tax FROM orders;也可在 WHERE 中用于条件判断:
SELECT * FROM products WHERE price * 0.8 > 100;表示筛选打折后(8折)价格仍高于 100 的商品。
注意事项
进行数学运算时需注意以下几点:
确保参与运算的字段是数值类型(INT、DECIMAL、FLOAT 等),否则可能产生错误或隐式转换 除法运算中避免除以 0,可用 IF 或 CASE 判断处理 浮点数计算可能存在精度问题,涉及金额建议使用 DECIMAL 类型 复杂表达式可使用括号明确优先级基本上就这些。合理使用 MySQL 的数学运算功能,可以减少应用层计算压力,提升查询效率。
