MySQL math函数

MySQL中的math函数主要用来处理数值类型的数据。

一、math函数的分类

math函数的分类

二、具体方法

类型函数名描述
常用函数
mod(x,y)返回 x 除以 y 以后的余数
n div m整除,n 为被除数,m 为除数
幂函数
sqrt(x)返回x的平方根,要求(x为非负数,返回null)
exp(x)返回 e 的 x 次方
pow(x,y)返回 x 的 y 次方
power(x,y)返回 x 的 y 次方
对数函数
ln(x)或log(x)返回自然对数(以 e 为底的对数)
log(base, x) 返回自然对数(以 base 为底的对数)
log10(x)返回以 10 为底的对数
log2(x)返回以 2 为底的对数
取整、取小数函数
ceil(x)或ceiling(x)向上取整
floor(x)向下取整
truncate(x [,y])不四舍五入取整、取小数
round(x [,y])四舍五入取整、取小数
特殊函数
pi()返回圆周率(3.141593)
rand(x)返回 0 到 1 的随机数,x是种子值
sign(x)返回 x 的符号,x 是负数、0、正数分别返回 -1、0 和 1
format(x,n)可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入。
三角函数
sin(x)求正弦值(参数是弧度)
cos(x)求余弦值(参数是弧度)
cot(x)求余切值(参数是弧度)
tan(x)求正切值(参数是弧度)
radians(x)将角度转换为弧度
degrees(x)将弧度转换为角度
asin(x)求反正弦值(单位为弧度),x 为一个数值
acos(x)求 x 的反余弦值(单位为弧度),x 为一个数值
atan(x)求反正切值(单位为弧度),x 为一个数值
列表最值函数
geatest(expr1, expr2, expr3, ...)返回列表中的最大值
least(expr1, expr2, expr3, ...)返回列表中的最小值
统计函数
count(expr)返回查询的记录总数,expr参数是一个字段或者 * 号
sum(expr)返回指定字段的总和,expr参数是一个字段
avg(expr)返回一个表达式的平均值,expr是一个字段
max(expr)返回字段 expr中的最大值
min(expr)返回字段 expr 中的最小值

三、实例

(1)常用函数

select
#绝对值
	abs(-1),	                       	   		#1
#整除
	10 div 5,									#2
#余数
	mod(5,2),									#1
    mod(45.5,6)									#3.5

#输出结果:1|2|1|3.5

(2)幂函数

select
#x的平方根
	sqrt(25), 									#5
    sqrt(0),                					#0
    sqrt(-25),              					#null
#e 的 x 次方
	exp(3), 									#20.085536923187668
#x 的 y 次方 
	pow(2,3),									#8                         
	power(2,3)									#8 

#输出结果:5|0|null|20.085536923187668|8|8

(3)对数函数

select
#返回 2 的自然对数:
	ln(2),  							        #0.6931471805599453  
#返回自然对数(以 e 为底的对数),如果带有 base 参数,则 base 为指定带底数。 
	log(20.085536923188),						#3.0000000000000164
	log(2, 4),									#2    
	log10(100),									#2                                  
#返回以 2 为底 6 的对数:
	log2(6)										#2.584962500721156  

#输出结果:0.6931471805599453|3.0000000000000164|2|2|2.584962500721156

(4)取整、取小数函数

select                                    
#向上取整
	ceil(1.5),									#2                             
	ceiling(1.5), 								#2
#向下取整
 	floor(1.5), 								#1       
#四舍五入取整、取小数
	round(1.23456), 							#1  
	round(52.454, 1), 							#52.5
#不四舍五入取整、取小数
    truncate(1.23456, 0),						#1
	truncate(52.454, 1) 						#52.4                    

#输出结果:2|2|1|1|52.5|1|52.4

(5)特殊函数

select
#0 到 1 的随机数
	rand(), 									#0.11078495449459641
#0 到 1 的随机数。种子数为2
    rand(2),									#0.6555866465490187
#返回 x 的符号,x 是负数、0、正数分别返回 -1、0 和 1 
	sign(-10),									#-1
#圆周率
 	pi(),										#3.141593
#格式化数字 "#,###.##" 形式:
	format(250500.5634, 2)						#250,500.56

#输出结果:0.11078495449459641|0.6555866465490187|-1|3.141593|250,500.56

(6)三角函数

select               
#正弦值(弧度)     
    sin(1/pi()),                                #0.31296179620778664   
    sin(radians(30)), 							#0.49999999999999994
#余弦值(弧度) 
	cos(2), 									#-0.4161468365471424
#余切值(弧度) 
	cot(6),										#-3.436353004180128
#正切值(弧度) 
	tan(1.75),									#-5.52037992250933                      
#角度转换为弧度
	radians(180), 								#3.141592653589793                            
#弧度转换为角度
	degrees(3.1415926535898), 					#180
#反余弦值
	acos(0.25),                         		#1.318116071652818                     
#反正弦值
	asin(0.25),                         		#0.25268025514207865                              
#反正切值
	atan(2.5)                         			#1.1902899496825317 

#输出结果:0.31296179620778664|0.49999999999999994|-0.4161468365471424|-3.436353004180128|-5.52037992250933|3.141592653589793|180.0000000000004|1.318116071652818|0.25268025514207865|1.1902899496825317

(7)列表最值函数

select      
#返回以下数字列表中的最大值:
 	greatest(3, 12, 34, 8, 25), 			    #34 
#返回以下字符串列表中的最大值:
 	greatest("Student", "Course", "Score"), 	#Student
#返回以下数字列表中的最小值:
 	least(3, 12, 34, 8, 25), 					#3
#返回以下字符串列表中的最小值:
 	least("Student", "Course", "Score")         #Course  

#输出结果:34|Student|3|Course

students 表 (id表示主键,name是中文姓名,Ename是英文姓名,score是平均成绩)

idnameEnamescore
1李明LiMing67
2张三ZhangSan74
3孙华SunHua87
4刘平LiuPing56

(8)统计函数

select
#返回 students 表中 id 字段总共有多少条记录
	count(id) as id_num,                #4
#计算 students 表中字段 score 的总和
	sum(score) as score_sum,            #284
#返回 students 表中 score 字段的平均值
	avg(score) as score_avg,            #71
#返回数据表 students 中字段 score 的最大值
	max(score) AS score_max,            #87
#返回数据表 students 中字段 score 的最小值
	min(score) AS score_min             #56
from students

#输出结果:4|284|71|87|56

注意:
列表最值函数与统计函数中求最值的函数是有区别的,前者只对括号里面列出来的表达式起作用,后者对表中一整列起作用。
把 当作统计函数使用时,会报错‘Incorrect parameter count in the call to native function ‘greatest’’。

创建 students 表的代码

-- ----------------------------
-- Table structure for students
-- ----------------------------
DROP TABLE IF EXISTS `students`;
CREATE TABLE `students`  (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学生中文姓名',
  `Ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学生英文姓名',
  `score` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '成绩',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of students
-- ----------------------------
INSERT INTO `students` VALUES (1, '李明', 'LiMing', '67');
INSERT INTO `students` VALUES (2, '张三', 'ZhangSan', '74');
INSERT INTO `students` VALUES (3, '孙华', 'SunHua', '87');
INSERT INTO `students` VALUES (4, '刘平', 'LiuPing', '56');
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值