首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
9.1 基本查询语句
9.2 单表查询
9.2.1 查询所有字段
9.2.2 查询指定字段
9.2.3 查询指定数据
9.2.4 带关键字IN的查询
9.2.5 带关键字BETWEEN AND的范围查询
9.2.6 带LIKE的字符匹配查询
9.2.7 用IS NULL关键字查询空值
9.2.8 带AND的多条件查询
9.2.9 带OR的多条件查询
9.2.10 用DISTINCT关键字去除结果中的重复行
9.2.11 用ORDER BY关键字对查询结果进行排序
9.2.12 用GROUP BY关键字分组查询
9.2.13 用LIMIT限制查询结果的数量
9.3 聚合函数查询
9.3.1 COUNT()统计函数
9.3.2 SUM()求和函数
9.3.3 AVG()平均数函数
9.3.4 MAX()最大值函数
9.3.5 MIN()最小值函数
9.4 连接查询
9.4.1 内连接查询
9.4.2 外连接查询
9.4.3 复合条件连接查询
9.5 子查询
9.5.1 带IN关键字的子查询
9.5.2 带比较运算符的子查询
9.5.3 带EXISTS关键字的子查询
9.5.4 带ANY关键字的子查询
9.5.5 带ALL关键字的子查询
9.6 合并查询结果
9.7 定义表和字段的别名
9.7.1 为表取别名
9.7.2 为字段取别名
9.8 使用正则表达式查询
9.8.1 匹配指定字符中的任意一个
9.8.2 使用“*”和“ ”来匹配多个字符
9.8.3 匹配以指定的字符开头和结束的记录
10.1 MySQL函数
10.2 数学函数
10.2.1 ABS(x)绝对值函数
10.2.2 FLOOR(x)向下取整函数
10.2.3 RAND()随机数函数
10.2.4 PI()圆周率函数
10.2.5 TRUNCATE(x,y)截断函数
10.2.6 ROUND(x)近似值函数和ROUND(x,y)四舍五入函数
10.2.7 SQRT(x)平方函数
10.3 字符串函数
10.3.1 INSERT(s1,x,len,s2)替换函数
10.3.2 UPPER(s)函数和UCASE(s)字母大写函数
10.3.3 LEFT(s,n)取左函数
10.3.4 RTRIM(s)去空格函数
10.3.5 SUBSTRING(s,n,len)截取函数
10.3.6 REVERSE(s)反转函数
10.3.7 FIELD(s,s1,s2,…,sn)位置函数
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3个位置函数
10.4 日期和时间函数
10.4.1 CURDATE()和CURRENT_DATE()当前日期函数
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
10.4.3 NOW()当前日期和时间函数
10.4.4 DATEDIFF(d1,d2)间隔天数函数
10.4.5 ADDDATE(d,n)日期计算函数
10.4.6 ADDDATE(d,INTERVAL expr type)日期时间计算函数
10.4.7 SUBDATE(d,n)日期计算函数
10.5 条件判断函数
10.6 系统信息函数
10.6.1 获取MySQL版本号、连接数和数据库名的函数
10.6.2 获取用户名的函数
10.6.3 获取字符串的字符集和排序方式的函数
10.7.1 格式化函数FORMAT(x,n)
10.7.2 改变字符集的函数
10.7.3 改变字段数据类型的函数
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(三)
小册名称:MySQL从入门到精通(三)
### 10.2 数学函数 在MySQL中,数学函数是一组强大的工具,它们允许开发者在数据库层面执行复杂的数值计算,无需依赖应用程序层面的逻辑处理。这些函数覆盖了基本的算术运算、三角函数、对数函数、指数函数、取整函数、随机数生成等多个方面,极大地丰富了数据处理的灵活性和效率。本章将深入介绍MySQL中的数学函数,帮助读者从入门到精通这些工具的使用。 #### 10.2.1 基本算术函数 基本算术函数是MySQL数学函数中最基础也是使用最频繁的一部分,它们包括加法(`+`)、减法(`-`)、乘法(`*`)、除法(`/`)、求模(`%` 或 `MOD()`)、绝对值(`ABS()`)、以及符号函数(`SIGN()`)。尽管加减乘除是SQL查询中可以直接使用的操作符,但`ABS()`和`SIGN()`等函数在处理复杂表达式时尤为有用。 - **ABS(x)**: 返回x的绝对值。 ```sql SELECT ABS(-123.45) AS AbsoluteValue; -- 结果为 123.45 ``` - **SIGN(x)**: 返回x的符号,如果x是负数,则返回-1;如果x是0,则返回0;如果x是正数,则返回1。 ```sql SELECT SIGN(-10), SIGN(0), SIGN(10); -- 结果分别为 -1, 0, 1 ``` #### 10.2.2 幂与对数函数 幂函数和对数函数在处理科学计算和数据分析时尤为重要。MySQL提供了`POW()`, `EXP()`, `LOG()`, `LOG10()`, 和`LOG2()`等函数来支持这些操作。 - **POW(x, y)** 或 **POWER(x, y)**: 返回x的y次幂。 ```sql SELECT POW(2, 3) AS PowerResult; -- 结果为 8 ``` - **EXP(x)**: 返回e(自然对数的底数,约等于2.718)的x次幂。 ```sql SELECT EXP(1) AS ExpResult; -- 结果约为 2.718 ``` - **LOG(x)**, **LOG10(x)**, **LOG2(x)**: 分别返回x的自然对数、以10为底的对数、和以2为底的对数。 ```sql SELECT LOG(10), LOG10(100), LOG2(8); -- 结果分别为 1, 2, 3 ``` #### 10.2.3 三角函数 MySQL中的三角函数主要用于处理角度和弧度之间的转换以及计算三角形的边和角。这些函数包括`SIN()`, `COS()`, `TAN()`, `ASIN()`, `ACOS()`, `ATAN()`, `ATAN2()`, `RADIANS()`, 和`DEGREES()`。 - **SIN(x)**, **COS(x)**, **TAN(x)**: 分别返回x(以弧度为单位)的正弦、余弦、正切值。 ```sql SELECT SIN(RADIANS(30)), COS(RADIANS(60)), TAN(RADIANS(45)); -- 结果接近 0.5, 0.5, 1 ``` - **ASIN(x)**, **ACOS(x)**, **ATAN(x)**: 分别是上述三角函数的反函数,返回角度的弧度值。 ```sql SELECT ASIN(0.5), ACOS(0.5), ATAN(1); -- 结果分别表示不同角度的弧度值 ``` - **ATAN2(y, x)**: 计算两个变量x和y的商的反正切值,考虑到了x和y的符号,因此能更准确地确定角度所在的象限。 ```sql SELECT ATAN2(1, 1) * 180 / PI() AS AngleInDegrees; -- 结果约为 45 度 ``` - **RADIANS(x)**, **DEGREES(x)**: 分别将角度转换为弧度,和将弧度转换为角度。 ```sql SELECT RADIANS(90), DEGREES(PI()); -- 结果分别为 π/2 的弧度值和 180 度 ``` #### 10.2.4 取整与四舍五入函数 取整和四舍五入函数在处理数字数据时非常有用,特别是在需要标准化数据格式或进行近似计算时。MySQL提供了`CEIL()`, `CEILING()`, `FLOOR()`, `ROUND()`, `TRUNCATE()`等函数。 - **CEIL(x)** 或 **CEILING(x)**: 返回不小于x的最小整数。 ```sql SELECT CEIL(123.45), CEIL(-123.45); -- 结果分别为 124, -123 ``` - **FLOOR(x)**: 返回不大于x的最大整数。 ```sql SELECT FLOOR(123.45), FLOOR(-123.45); -- 结果分别为 123, -124 ``` - **ROUND(x, d)**: 将x四舍五入到小数点后d位。如果d为0,则四舍五入到整数。 ```sql SELECT ROUND(123.4567, 2), ROUND(123.4567, 0); -- 结果分别为 123.46, 123 ``` - **TRUNCATE(x, d)**: 将x截断到小数点后d位,不进行四舍五入。 ```sql SELECT TRUNCATE(123.4567, 2), TRUNCATE(123.4567, 0); -- 结果分别为 123.45, 123 ``` #### 10.2.5 随机数函数 在数据库操作中,有时需要生成随机数用于测试、模拟或随机选择记录。MySQL提供了`RAND()`函数来满足这一需求。 - **RAND()**: 返回一个0到1之间的随机浮点数。 ```sql SELECT RAND(); -- 每次执行都可能得到不同的结果,如 0.45678 ``` - **RAND(N)**: 如果N是一个常数,则每次调用`RAND(N)`时都会返回相同的随机数序列中的下一个数。这对于需要可重现的随机结果时非常有用。 ```sql SELECT RAND(1), RAND(1); -- 两次调用将返回相同的值 ``` #### 10.2.6 高级数学函数 除了上述基础数学函数外,MySQL还提供了一些高级数学函数,如`PI()`, `SQRT()`, `ACOT()`, `COT()`, 以及其他特定于应用场景的函数。这些函数在处理复杂数学计算时非常有用。 - **PI()**: 返回圆周率的值(约等于3.141593)。 ```sql SELECT PI(); -- 结果为圆周率 ``` - **SQRT(x)**: 返回x的平方根。 ```sql SELECT SQRT(16); -- 结果为 4 ``` #### 结语 通过本章的学习,读者应该对MySQL中的数学函数有了全面的了解。从基本的算术运算到复杂的三角函数、对数函数、幂函数,再到取整、四舍五入和随机数生成,这些函数为数据库中的数值处理提供了强大的支持。掌握这些函数的使用,将使你在处理复杂数据分析和报表生成时更加得心应手。随着实践的不断深入,你将能更加灵活地运用这些工具,优化你的数据查询和处理流程。
上一篇:
10.1 MySQL函数
下一篇:
10.2.1 ABS(x)绝对值函数
该分类下的相关小册推荐:
MySQL8.0入门与实践
MySQL必会核心问题
MySQL从入门到精通(四)
MySQL从入门到精通(一)
MySQL 实战 45 讲
MySQL从入门到精通(五)
细说MySQL(零基础到高级应用)
MySQL从入门到精通(二)
SQL零基础到熟练应用(增删改查)