Administrator
发布于 2025-09-28 / 25 阅读
0
0

MySQL第19课:数学函数(二)

考试大纲中的数学函数包括6个:ABS()、FLOOR()、RAND()、TRUNCATE()、SQRT() 、ROUND()

函数总结

函数

用途

示例

ROUND(x, d)

四舍五入到d位小数

ROUND(3.14159, 2) = 3.14

TRUNCATE(x, d)

截断到d位小数

TRUNCATE(3.14159, 2) = 3.14

ABS(x)

绝对值

ABS(-5) = 5

POW(x, y)

x的y次方

POW(2, 5) = 32

SQRT(x)

平方根

SQRT(81) = 9

MOD(x, y)

求余数

MOD(17, 5) = 2

FORMAT()

PI()

圆周率

PI() = 3.141593

ROUND(x, d) 、TRUNCATE(x, d)、ABS(x)、POW(x, y)、SQRT(x)、MOD(x, y)、PI()、FORMAT()

一、ROUND(x, d) - 四舍五入函数

用途:对数字进行四舍五入,可以指定保留的小数位数

语法ROUND(x, d)

  • x:要处理的数字

  • d:保留的小数位数(可选,默认为0)

示例

SELECT ROUND(12.56);        -- 结果:13
SELECT ROUND(12.56, 1);     -- 结果:12.6
SELECT ROUND(12.54, 1);     -- 结果:12.5
SELECT ROUND(123.456, -1);  -- 结果:120(整数位四舍五入)

二、TRUNCATE(x, d) - 截断函数

用途:直接截断数字,不进行四舍五入

语法TRUNCATE(x, d)

  • x:要处理的数字

  • d:保留的小数位数

示例

SELECT TRUNCATE(12.56, 1);    -- 结果:12.5
SELECT TRUNCATE(12.99, 0);    -- 结果:12
SELECT TRUNCATE(123.456, -1); -- 结果:120

ROUND vs TRUNCATE 对比

SELECT ROUND(12.567, 2), TRUNCATE(12.567, 2); 
-- 结果:12.57 vs 12.56

三、ABS(x) - 绝对值函数

用途:返回数字的绝对值(去掉负号)

语法ABS(x)

  • x:任意数字

示例

SELECT ABS(10);     -- 结果:10
SELECT ABS(-10);    -- 结果:10
SELECT ABS(0);      -- 结果:0
SELECT ABS(-3.14);  -- 结果:3.14

四、POW(x, y) - 幂运算函数

用途:计算 x 的 y 次方

语法POW(x, y)

  • x:底数

  • y:指数

示例

SELECT POW(2, 3);    -- 结果:8(2的3次方)
SELECT POW(3, 2);    -- 结果:9(3的平方)
SELECT POW(4, 0.5);  -- 结果:2(4的平方根)
SELECT POW(10, -1);  -- 结果:0.1(10的-1次方)

五、SQRT(x) - 平方根函数

用途:计算数字的平方根

语法SQRT(x)

  • x:要计算平方根的数字(必须为非负数)

示例

SELECT SQRT(16);     -- 结果:4
SELECT SQRT(2);      -- 结果:1.414213562
SELECT SQRT(100);    -- 结果:10
-- SELECT SQRT(-4);  -- 错误:负数没有实数平方根

六、MOD(x, y) - 取模函数

用途:返回 x 除以 y 的余数

语法MOD(x, y)

  • x:被除数

  • y:除数

示例

SELECT MOD(10, 3);   -- 结果:1(10 ÷ 3 = 3 余 1)
SELECT MOD(15, 5);   -- 结果:0(整除)
SELECT MOD(7, 2);    -- 结果:1(判断奇偶性)
SELECT MOD(-10, 3);  -- 结果:-1

七、PI() - 圆周率函数

用途:返回圆周率 π 的值

语法PI()

  • 无参数

示例

SELECT PI();                    -- 结果:3.141593
SELECT ROUND(PI(), 2);         -- 结果:3.14
SELECT PI() * POW(5, 2);       -- 结果:78.5398(计算半径为5的圆面积)

八、FORMAT(x, d) - 数字格式化函数

用途:将数字格式化为易读的形式,添加千位分隔符

语法FORMAT(x, d)

  • x:要格式化的数字

  • d:保留的小数位数

示例

SELECT FORMAT(1234567.891, 2);  -- 结果:'1,234,567.89'
SELECT FORMAT(1234567, 0);      -- 结果:'1,234,567'
SELECT FORMAT(1234.5, 3);       -- 结果:'1,234.500'

练习题

  1. 某商品原价 156.78 元,打 8.5 折后四舍五入保留2位小数,显示最终价格

  2. 计算点 (3,4) 到原点 (0,0) 的直线距离(勾股定理)

  3. 判断数字 123 是奇数还是偶数,如果是偶数显示"偶数",奇数显示"奇数"

  4. 计算外圆半径8cm,内圆半径5cm的圆环面积,保留2位小数

  5. 将销售额 1234567.89 格式化为千分位显示,保留1位小数

  6. 验证 144 的平方根是否为 12,是则显示"正确",否则显示"错误"

  7. 计算 100 ÷ 3 的结果,分别用四舍五入和截断方式保留3位小数

  8. 计算 2 的 10 次方(计算机存储单位换算)

  9. 比较 -15 和 10 的绝对值大小,显示较大的绝对值

  10. 检查 2024 是否能被 4 整除,能整除显示"闰年",否则显示"平年"

  11. 计算表达式:| -5 |² + √81 的结果

  12. 计算直径为 12 的圆的周长和面积,都保留2位小数

  13. 将圆周率 π 格式化为保留5位小数并显示

  14. 计算点 (6,8) 到原点的距离,结果四舍五入保留3位小数并格式化显示

  15. 验证 7³ 是否等于 343,相等显示"正确",否则显示"错误"

  16. 本金 1000 元,年利率 5%,计算3年后的本息和(复利公式:本金 × (1 + 利率)^年数),保留2位小数

  17. 计算 1000 ÷ 7,分别显示:(1) 四舍五入保留2位小数 (2) 截断保留2位小数 (3) 两者的差值

  18. 计算半径为 5 的球体体积(体积公式:4/3 × π × r³),保留2位小数

  19. 生成 1-100 范围内所有能被 7 整除的数字(使用模运算判断)

  20. 计算以下表达式并格式化显示结果:(| -8 | × 3² + √256) ÷ 5,要求:结果四舍五入保留2位小数,并添加千分位分隔符

参考答案

-- 1. 价格计算
SELECT ROUND(156.78 * 0.85, 2) AS 最终价格;
​
-- 2. 距离计算
SELECT SQRT(POW(3, 2) + POW(4, 2)) AS 距离;
​
-- 3. 奇偶判断
SELECT CASE WHEN MOD(123, 2) = 0 THEN '偶数' ELSE '奇数' END AS 奇偶性;
​
-- 4. 圆环面积
SELECT ROUND(PI() * (POW(8, 2) - POW(5, 2)), 2) AS 圆环面积;
​
-- 5. 数字格式化
SELECT FORMAT(1234567.89, 1) AS 格式化销售额;
​
-- 6. 平方根验证
SELECT CASE WHEN SQRT(144) = 12 THEN '正确' ELSE '错误' END AS 验证结果;
​
-- 7. 截断计算
SELECT 
    ROUND(100/3, 3) AS 四舍五入,
    TRUNCATE(100/3, 3) AS 截断;
​
-- 8. 幂运算应用
SELECT POW(2, 10) AS 二的十次方;
​
-- 9. 绝对值比较
SELECT GREATEST(ABS(-15), ABS(10)) AS 较大绝对值;
​
-- 10. 模运算应用
SELECT CASE WHEN MOD(2024, 4) = 0 THEN '闰年' ELSE '平年' END AS 年份类型;
​
-- 11. 复合计算
SELECT POW(ABS(-5), 2) + SQRT(81) AS 计算结果;
​
-- 12. 圆周率应用
SELECT 
    ROUND(PI() * 12, 2) AS 周长,
    ROUND(PI() * POW(12/2, 2), 2) AS 面积;
​
-- 13. 格式化显示
SELECT FORMAT(PI(), 5) AS 圆周率;
​
-- 14. 距离格式化
SELECT FORMAT(ROUND(SQRT(POW(6, 2) + POW(8, 2)), 3), 3) AS 格式化距离;
​
-- 15. 数学验证
SELECT CASE WHEN POW(7, 3) = 343 THEN '正确' ELSE '错误' END AS 验证结果;
​
-- 16. 财务计算
SELECT ROUND(1000 * POW(1.05, 3), 2) AS 三年后本息和;
​
-- 17. 截断应用
SELECT 
    ROUND(1000/7, 2) AS 四舍五入,
    TRUNCATE(1000/7, 2) AS 截断,
    ROUND(1000/7, 2) - TRUNCATE(1000/7, 2) AS 差值;
​
-- 18. 几何计算
SELECT ROUND((4/3) * PI() * POW(5, 3), 2) AS 球体体积;
​
-- 19. 模运算进阶
-- 注:这里使用数字表或生成序列的方式,简化版示例:
SELECT 7 AS 数字 WHERE MOD(7, 7) = 0
UNION SELECT 14 WHERE MOD(14, 7) = 0
UNION SELECT 21 WHERE MOD(21, 7) = 0;
-- 实际应用中可以使用循环或数字表
​
-- 20. 综合应用
SELECT FORMAT(ROUND((ABS(-8) * POW(3, 2) + SQRT(256)) / 5, 2), 2) AS 最终结果;
​
-- 21. 计算圆的面积和周长
SELECT 
    ROUND(PI() * POW(5, 2), 2) AS 圆面积,
    ROUND(2 * PI() * 5, 2) AS 圆周长;
    
-- 22. 商品价格计算(折扣后价格)
SELECT 
    price AS 原价,
    ROUND(price * 0.8, 2) AS 八折价格,
    FORMAT(price * 0.8, 2) AS 格式化价格
FROM products;
​
-- 23.数学运算综合
SELECT 
    ABS(-15) AS 绝对值,
    POW(2, 8) AS 2的8次方,
    SQRT(64) AS 平方根,
    MOD(17, 5) AS 余数;


评论