![MySQL 8从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/737/26542737/b_26542737.jpg)
6.2 数学函数
数学函数主要用来处理数值数据,主要的数学函数有绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在有错误产生时,数学函数将会返回空值NULL。本节将介绍各种数学函数的功能和用法。
6.2.1 绝对值函数ABS(x)和返回圆周率的函数PI()
ABS(X)返回X的绝对值。
【例6.1】求2、-3.3和-33的绝对值,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/070.jpg?sign=1738787341-2FlmI9XDCuITRLc46IGCZmrpDli7blmP-0-3fec9b434d023e20c2c74fac3739d7ea)
正数的绝对值为其本身,2的绝对值为2;负数的绝对值为其相反数,-3.3的绝对值为3.3;-33的绝对值为33。
PI()返回圆周率π的值。默认的显示小数位数是6位。
【例6.2】返回圆周率值,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/071.jpg?sign=1738787341-Yfb3u50ITHKsA93z2IdUgszrWJv3p1MY-0-4019fb8c786d9beebbb2022629422cc9)
返回结果保留了7位有效数字。
6.2.2 平方根函数SQRT(x)和求余函数MOD(x,y)
SQRT(x)返回非负数x的二次方根。
【例6.3】求9、40和-49的二次平方根,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/072.jpg?sign=1738787341-OXQ1Q0JkRIiXluQhdUOpG5EAua0vnemi-0-e51ecf2734e56453a6494d60bed11f5f)
3的平方等于9,因此9的二次平方根为3;40的平方根为6.324555320336759;而负数没有平方根,因此-49返回的结果为NULL。
MOD(x,y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,它返回除法运算后的精确余数。
【例6.4】对(31,8)、(234, 10)、(45.5,6)进行求余运算,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/073.jpg?sign=1738787341-fRaAtZV1cZ9zaZCSUxWUtBU8CyGoLzwl-0-213ff24b9d24e7520e9fb45e5db80c5a)
6.2.3 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x)
CEIL(x)和CEILING(x)的意义相同,返回不小于x的最小整数值,返回值转化为一个BIGINT。
【例6.5】使用CEILING函数返回最小整数,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/074.jpg?sign=1738787341-KvOX3vWRoOSunDzNYjWaGABnazlAWrvj-0-580844cd3ea7033c0dcab9004bd905c4)
-3.35为负数,不小于-3.35的最小整数为-3,因此返回值为-3;不小于3.35的最小整数为4,因此返回值为4。
FLOOR(x)返回不大于x的最大整数值,返回值转化为一个BIGINT。
【例6.6】使用FLOOR函数返回最大整数,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/075.jpg?sign=1738787341-XMzYNpUwqtQfoGw0eGESXP22fHCMAIoG-0-54a1008673a72e84e6e25208150e9e15)
-3.35为负数,不大于-3.35的最大整数为-4,因此返回值为-4;不大于3.35的最大整数为3,因此返回值为3。
6.2.4 获取随机数的函数RAND()和RAND(x)
RAND(x)返回一个随机浮点值v,范围在0到1之间(0 ≤ v ≤ 1.0)。若已指定一个整数参数x,则它被用作种子值,用来产生重复序列。
【例6.7】使用RAND()函数产生随机数,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/076.jpg?sign=1738787341-72qK2GSgnkXEMdM9q81BREUtpaW9wMx8-0-aff4a6063bfe70ca0402486e293b222f)
可以看到,不带参数的RAND()每次产生的随机数值是不同的。
【例6.8】使用RAND(x)函数产生随机数,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/077.jpg?sign=1738787341-a3EI06RMLP5qiCy4ydNLtWGxkSzAhjKZ-0-341daae235a760a302c1240ae901bd97)
可以看到,当RAND(x)的参数相同时,将产生相同的随机数,不同的x产生的随机数值不同。
6.2.5 函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)
ROUND(x)返回最接近于参数x的整数,对x值进行四舍五入。
【例6.9】使用ROUND(x)函数对操作数进行四舍五入操作,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/078.jpg?sign=1738787341-Dz9kR3PR1qYXsGp4ToaeTfAepJr72uBx-0-09aec21baa5d9664e7dc64b64a1738d8)
可以看到,四舍五入处理之后,只保留了各个值的整数部分。
ROUND(x,y)返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。
【例6.10】使用ROUND(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/079.jpg?sign=1738787341-389ToAcUuEUbo35TvLj5Mrcpq8ZuQS7B-0-8aa7665e7a0e85082bf3ed0b990a9127)
ROUND(1.38, 1)保留小数点后面1位,四舍五入的结果为1.4;ROUND(1.38, 0)保留小数点后面0位,即返回四舍五入后的整数值; ROUND(23.38, -1)和ROUND (232.38,-2)分别保留小数点左边1位和2位。
提示
y值为负数时,保留的小数点左边的相应位数直接保存为0,不进行四舍五入。
TRUNCATE(x,y)返回被舍去至小数点后y位的数字x。若y的值为0,则结果不带有小数点或不带有小数部分。若y设为负数,则截去(归零)x小数点左起第y位开始后面所有低位的值。
【例6.11】使用TRUNCATE(x,y)函数对操作数进行截取操作,结果保留小数点后面指定y位,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/080.jpg?sign=1738787341-l7sK3uDjnGunUtSjr1RBqXlogHf1pBvt-0-b723496a9f9a09b646ea3759a918bd73)
TRUNCATE(1.31,1)和TRUNCATE(1.99,1)都保留小数点后1位数字,返回值分别为1.3和1.9;TRUNCATE(1.99,0)返回整数部分值1;TRUNCATE(19.99,-1)截去小数点左边第1位后面的值,并将整数部分的1位数字置0,结果为10。
提示
ROUND(x,y)函数在截取值的时候会四舍五入,而TRUNCATE (x,y)直接截取值,并不进行四舍五入。
6.2.6 符号函数SIGN(x)
SIGN(x)返回参数的符号,x的值为负、零或正时返回结果依次为-1、0或1。
【例6.12】使用SIGN函数返回参数的符号,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/081.jpg?sign=1738787341-tJRfPSwnkd3Mm0DwO7JJ79L1SoA2L83j-0-3da25134bfcef24a1873cb81f3d2f65e)
SIGN(-21)返回-1;SIGN(0)返回0;SIGN(21)返回1。
6.2.7 幂运算函数POW(x,y)、POWER(x,y)和EXP(x)
POW(x,y)或者POWER(x,y)函数返回x的y次乘方的结果值。
【例6.13】使用POW和POWER函数进行乘方运算,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/082.jpg?sign=1738787341-Nm9hEgY8krhK0CHNbCCyzuBm6qMkYEK7-0-690eb14cbf66cc9fde67895978cb8eff)
可以看到,POW和POWER的结果是相同的,POW(2,2)和POWER(2,2)返回2的2次方,结果都是4;POW(2,-2)和POWER(2,-2)都返回2的-2次方,结果为4的倒数,即0.25。
EXP(x)返回e的x乘方后的值。
【例6.14】使用EXP函数计算e的乘方,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/083.jpg?sign=1738787341-upJU5NR85vYcqZNd2bmpBJMC8oJUN7Cj-0-303ee4c47db056a46f4f6aa427058063)
EXP(3)返回以e为底的3次方,结果为20.085536923187668;EXP(-3)返回以e为底的-3次方,结果为0.049787068367863944;EXP(0)返回以e为底的0次方,结果为1。
6.2.8 对数运算函数LOG(x)和LOG10(x)
LOG(x)返回x的自然对数,x相对于基数e的对数。
【例6.15】使用LOG(x)函数计算自然对数,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/084.jpg?sign=1738787341-X9qdmpbladoKXgR55ju6HuyGAfNLd9nV-0-aa5c55f807af67594601de3094c562e2)
对数定义域不能为负数,因此LOG(-3)返回结果为NULL。
LOG10(x)返回x的基数为10的对数。
【例6.16】使用LOG10计算以10为基数的对数,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/085.jpg?sign=1738787341-tPLHeHKBycx6un9H8AQgAZLqNjn6w3Oy-0-19dd7b47f9d472d1f044fb38bee3ed92)
10的2次乘方等于100,因此LOG10(100)返回结果为2,LOG10(-100)定义域非负,因此返回NULL。
6.2.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)
RADIANS(x)将参数x由角度转化为弧度。
【例6.17】使用RADIANS将角度转换为弧度,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/086.jpg?sign=1738787341-74zRwbYfwaf2nFBO1E3TeVJaP9wfNGsS-0-03a7542fc6be1f2e7a69f7e8757d808e)
DEGREES(x)将参数x由弧度转化为角度。
【例6.18】使用DEGREES将弧度转换为角度,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/087.jpg?sign=1738787341-dcuvjRd5pfs9ktWEPvJ0N2jpM6aT1eha-0-38e46b4f21d939aaf991da45b5c9ad9f)
6.2.10 正弦函数SIN(x)和反正弦函数ASIN(x)
SIN(x)返回x正弦,其中x为弧度值。
【例6.19】使用SIN函数计算正弦值,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/088.jpg?sign=1738787341-K1bySsEf7BmUcb2cQAsuVr7JxOHDpAIU-0-b7447d1a7f7d228d3c845e9e6c4c2d81)
ASIN(x)返回x的反正弦,即正弦为x的值。若x不在-1到1的范围之内,则返回NULL。
【例6.20】使用ASIN函数计算反正弦值,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/089.jpg?sign=1738787341-AuoJ1HAykmaLUfcIGc4Nj7kAaHpTxnsp-0-88f4563c0ea0b50d6efd5db7b24bd311)
由结果可以看到,函数ASIN和SIN互为反函数;ASIN(3)中的参数3超出了正弦值的范围,因此返回NULL。
6.2.11 余弦函数COS(x)和反余弦函数ACOS(x)
COS(x)返回x的余弦,其中x为弧度值。
【例6.21】使用COS函数计算余弦值,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/090.jpg?sign=1738787341-trVaWByRQnIDAAmRUsYHMyEHHjWJuGe6-0-533526e7b9e6b916b2e52f1e081b9a77)
由结果可以看到,COS(0)值为1;COS(PI())值为-1;COS(1)值为0.5403023058681398。
ACOS(x)返回x的反余弦,即余弦是x的值。若x不在-1~1的范围之内,则返回NULL。
【例6.22】使用ACOS函数计算反余弦值,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/091.jpg?sign=1738787341-eAwvImE5GpvmmWeat33q9DODPKhtvFZZ-0-4a8f051b245a6e7a8c430d809ba200c2)
由结果可以看到,函数ACOS和COS互为反函数。
6.2.12 正切函数、反正切函数和余切函数
TAN(x)返回x的正切,其中x为给定的弧度值。
【例6.23】使用TAN函数计算正切值,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/092.jpg?sign=1738787341-rtXZc2V2jkkkridkAIVvZgvrrL2Ek6YP-0-352ba7ead81f3ae28a43ea4b0d526465)
ATAN(x)返回x的反正切,即正切为x的值。
【例6.24】使用ATAN函数计算反正切值,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/093.jpg?sign=1738787341-7Eb9nY2rzVGgza1j4HE5YAwtQ9do3Hm8-0-8727135bcc80dd04413264a5bbc0f585)
由结果可以看到,函数ATAN和TAN互为反函数。
COT(x)返回x的余切。
【例6.25】使用COT()函数计算余切值,输入语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/094.jpg?sign=1738787341-qgejrAEn19nf4hDcSLFt0A242aWfE1u8-0-146af4fb83e257df984fcf3fdfc5412a)
由结果可以看到,函数COT和TAN互为倒函数。