八MySQL 常用函数汇总

Posted Amo Xiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八MySQL 常用函数汇总相关的知识,希望对你有一定的参考价值。

文章目录

mysql 提供了众多功能强大、方便易用的函数。使用这些函数,可以极大地提高用户对数据库的管理效率。MySQL 中的函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数和加密函数等函数。本文将介绍 MySQL 中这些函数的功能和用法。

前置知识:

一、数据库开发与实战专栏导学及数据库基础概念入门
二、MySQL 介绍及 MySQL 安装与配置
三、MySQL 数据库的基本操作
四、MySQL 存储引擎及数据类型
五、数据导入与基本的 SELECT 语句
六、MySQL 数据库练习题1(包含前5章练习题目及答案)
七、MySQL 多表查询详解(附练习题及答案----超详细)

一、函数

1.1 函数简介

函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既 提高了代码效率,又 提高了可维护性 。在 SQL 中我们也可以使用函数对检索出来的数据进行函数操作,使用这些函数,数据库功能可以变得更加强大,可以更加灵活地满足不同用户的需求,可以极大地 提高用户对数据库的管理效率

从函数定义的角度出发,我们可以将函数分成 内置函数自定义函数。在 SQL 语言中,同样也包括了内置函数和自定义函数。内置函数是系统内置的通用函数,而自定义函数是我们根据自己的需要编写的,本文讲解的是 SQL 的内置函数。MySQL 提供了丰富的内置函数,各类函数从功能方面主要分为 数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数和加密函数 等函数。本文将分类介绍不同函数的使用方法。

1.2 不同DBMS函数的差异

我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即 DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。实际上,只有很少的函数是被 DBMS 同时支持的。比如,大多数 DBMS 使用 (||) 或者 (+) 来做拼接符,而在 MySQL 中的字符串拼接函数为 concat()。大部分 DBMS 会有自己特定的函数,这就意味着采用 SQL 函数的代码可移植性是很差的,因此在使用函数的时候需要特别注意。

二、数学函数

数学函数主要用来处理数值数据,数学函数主要有绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在产生错误时,数学函数将会返回空值 NULL。本小节将介绍各种数学函数的作用和用法。

2.1 绝对值函数ABS(x)和返回圆周率的函数PI()

ABS(X) 返回 X 的绝对值。【示例1】求2、-3.3 和 -33 的绝对值,输入语句如下:

mysql> SELECT ABS(2), ABS(-3.3), ABS(-33);
+--------+-----------+----------+
| ABS(2) | ABS(-3.3) | ABS(-33) |
+--------+-----------+----------+
|      2 |       3.3 |       33 |
+--------+-----------+----------+
1 row in set (0.00 sec)
#正数的绝对值为其本身,2的绝对值为2。负数的绝对值为其相反数,-3.3的绝对值为3.3 -33的绝对值为33。

PI()返回圆周率 π 的值,默认显示小数位数是6位。【示例2】返回圆周率值,输入语句如下:

mysql> SELECT PI();
+----------+
| PI()     |
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)

mysql>

2.2 平方根函数SQRT(x)和求余函数MOD(x,y)

SQRT(x) 返回非负数x的二次平方根。 【示例3】求9、40和-49的二次平方根,输入语句如下:

#负数没有平方根,因此-49的平方根返回的结果为NULL。
mysql> SELECT SQRT(9), SQRT(40), SQRT(-49);
+---------+-------------------+-----------+
| SQRT(9) | SQRT(40)          | SQRT(-49) |
+---------+-------------------+-----------+
|       3 | 6.324555320336759 |      NULL |
+---------+-------------------+-----------+
1 row in set (0.00 sec)

MOD(x,y) 返回 xy 除后的余数,MOD() 对于带有小数部分的数值也起作用,它返回除法运算后的精确余数。 【示例4】对(31,8)、(234, 10)、(45.5,6)进行求余运算,输入语句如下:

mysql> SELECT MOD(31,8),MOD(234, 10),MOD(45.5,6);
+-----------+--------------+-------------+
| MOD(31,8) | MOD(234, 10) | MOD(45.5,6) |
+-----------+--------------+-------------+
|         7 |            4 |         3.5 |
+-----------+--------------+-------------+
1 row in set (0.00 sec)

2.3 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x)

CEIL(x)CEILING(x) 的意义相同,返回不小于 x 的最小整数值,返回值转化为一个 BIGINT 【示例5】使用 CEILING 函数返回最小整数,输入语句如下:

mysql> SELECT  CEIL(-3.35),CEILING(3.35);
+-------------+---------------+
| CEIL(-3.35) | CEILING(3.35) |
+-------------+---------------+
|          -3 |             4 |
+-------------+---------------+
1 row in set (0.00 sec)
#-3.35为负数,不小于-3.35的最小整数为-3,因此返回值为-3;不小于3.35的最小整数为4,因此返回值为4。

FLOOR(x) 返回不大于 x 的最大整数值,返回值转化为一个 BIGINT【示例6】使用FLOOR函数返回最大整数,输入语句如下:

mysql> SELECT FLOOR(-3.35), FLOOR(3.35);
+--------------+-------------+
| FLOOR(-3.35) | FLOOR(3.35) |
+--------------+-------------+
|           -4 |           3 |
+--------------+-------------+
1 row in set (0.00 sec)

2.4 获取随机数的函数RAND()和RAND(x)

RAND(x) 返回一个随机浮点值v,范围在0到1之间 (0 ≤ v ≤ 1.0)。若已指定一个整数参数x,则它被用作种子值,用来产生重复序列。 【示例7】使用RAND()函数产生随机数,输入语句如下:

#可以看到,不带参数的RAND()每次产生的随机数值是不同的。
mysql> SELECT RAND(),RAND(),RAND();
+--------------------+---------------------+--------------------+
| RAND()             | RAND()              | RAND()             |
+--------------------+---------------------+--------------------+
| 0.7769518548408075 | 0.44221097178963104 | 0.8801993251593777 |
+--------------------+---------------------+--------------------+
1 row in set (0.00 sec)

【示例8】使用RAND(x)函数产生随机数,输入语句如下:

mysql> SELECT RAND(10),RAND(10),RAND(11);
+--------------------+--------------------+-------------------+
| RAND(10)           | RAND(10)           | RAND(11)          |
+--------------------+--------------------+-------------------+
| 0.6570515219653505 | 0.6570515219653505 | 0.907234631392392 |
+--------------------+--------------------+-------------------+
1 row in set (0.00 sec)

可以看到,当 RAND(x) 的参数相同时,将产生相同的随机数,不同的 x 产生的随机数值不同。

2.5 函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)

ROUND(x) 返回最接近于参数 x 的整数,对 x 值进行四舍五入。【示例9】使用ROUND(x)函数对操作数进行四舍五入,输入语句如下:

mysql> SELECT ROUND(-1.14),ROUND(-1.67), ROUND(1.14),ROUND(1.66);
+--------------+--------------+-------------+-------------+
| ROUND(-1.14) | ROUND(-1.67) | ROUND(1.14) | ROUND(1.66) |
+--------------+--------------+-------------+-------------+
|           -1 |           -2 |           1 |           2 |
+--------------+--------------+-------------+-------------+
1 row in set (0.00 sec)

可以看到,四舍五入处理之后,只保留了各个值的整数部分。ROUND(x,y) 返回最接近于参数 x 的数,其值保留到小数点后面 y 位,若 y 为负值,则将保留 x 值到小数点左边 y 位。 【示例10】使用ROUND(x,y)函数对操作数x进行四舍五入操作,结果保留小数点后面y位,输入语句如下:

mysql> SELECT ROUND(1.38, 1), ROUND(1.38, 0), ROUND(232.38, -1), ROUND(232.38,-2);
+----------------+----------------+-------------------+------------------+
| ROUND(1.38, 1) | ROUND(1.38, 0) | ROUND(232.38, -1) | ROUND(232.38,-2) |
+----------------+----------------+-------------------+------------------+
|            1.4 |              1 |               230 |              200 |
+----------------+----------------+-------------------+------------------+
1 row in set (0.00 sec)

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 位开始后面所有低位的值。 【示例11】使用TRUNCATE(x,y)函数对操作数进行截取操作,结果保留小数点后面指定y位,输入语句如下:

mysql> SELECT TRUNCATE(1.31,1), TRUNCATE(1.99,1), TRUNCATE(1.99,0), TRUNCATE(19.99,-1);
+------------------+------------------+------------------+--------------------+
| TRUNCATE(1.31,1) | TRUNCATE(1.99,1) | TRUNCATE(1.99,0) | TRUNCATE(19.99,-1) |
+------------------+------------------+------------------+--------------------+
|              1.3 |              1.9 |                1 |                 10 |
+------------------+------------------+------------------+--------------------+
1 row in set (0.00 sec)

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)直接截取值,并不进行四舍五入。

2.6 符号函数SIGN(x)

SIGN(x) 返回参数的符号,x 的值分别为负数、零或正数时,返回结果依次为 -1、0或1。 【示例12】使用SIGN函数返回参数的符号,输入语句如下:

#SIGN(-21)返回-1;SIGN(0)返回0;SIGN(21)返回1。
mysql> SELECT SIGN(-21),SIGN(0), SIGN(21);
+-----------+---------+----------+
| SIGN(-21) | SIGN(0) | SIGN(21) |
+-----------+---------+----------+
|        -1 |       0 |        1 |
+-----------+---------+----------+
1 row in set (0.00 sec)

2.7 幂运算函数POW(x,y)、POWER(x,y)和EXP(x)

POW(x,y) 或者 POWER(x,y) 函数返回 xy 次方(乘方) 的结果值。 【示例13】使用POW和POWER函数进行乘方运算,输入语句如下:

#可以看到,POW和POWER的结果是相同的,POW(2,2)和POWER(2,2)返回2的2次方,结果都是4
# POW(2,-2)和POWER(2,-2)都返回2的-2次方,结果为4的倒数,即0.25。
mysql> SELECT POW(2,2), POWER(2,2),POW(2,-2), POWER(2,-2);
+----------+------------+-----------+-------------+
| POW(2,2) | POWER(2,2) | POW(2,-2) | POWER(2,-2) |
+----------+------------+-----------+-------------+
|        4 |          4 |      0.25 |        0.25 |
+----------+------------+-----------+-------------+
1 row in set (0.00 sec)

EXP(x) 返回 e(数学中e的值约为2.7182818284)x 乘方后的值。 【示例14】使用EXP函数计算e的乘方,输入语句如下:

mysql> SELECT EXP(3),EXP(-3),EXP(0);
+--------------------+----------------------+--------+
| EXP(3)             | EXP(-3)              | EXP(0) |
+--------------------+----------------------+--------+
| 20.085536923187668 | 0.049787068367863944 |      1 |
+--------------------+----------------------+--------+
1 row in set (0.00 sec)

2.8 对数运算函数LOG(x)和LOG10(x)

LOG(x) 返回 x 的自然对数,x 相对于基数 e 的对数。 【示例15】使用LOG(x)函数计算自然对数,输入语句如下:

mysql> SELECT LOG(3), LOG(-3);
+--------------------+---------+
| LOG(3)             | LOG(-3) |
+--------------------+---------+
| 1.0986122886681098 |    NULL |
+--------------------+---------+
1 row in set, 1 warning (0.00 sec)
#对数定义域不能为负数,因此LOG(-3)返回结果为NULL。

LOG10(x) 返回 x 的基数为 10 的对数。 【示例16】使用LOG10计算以10为基数的对数,输入语句如下:

mysql> SELECT LOG10(2), LOG10(100), LOG10(-100);
+--------------------+------------+-------------+
| LOG10(2)           | LOG10(100) | LOG10(-100) |
+--------------------+------------+-------------+
| 0.3010299956639812 |          2 |        NULL |
+--------------------+------------+-------------+
1 row in set, 1 warning (0.00 sec)

2.9 其他数学函数(不怎么常用)

1、RADIANS(x) 将参数 x 由角度转化为弧度。

mysql> SELECT RADIANS(90),RADIANS(180);
+--------------------+-------------------+
| RADIANS(90)        | RADIANS(180)      |
+--------------------+-------------------+
| 1.5707963267948966 | 3.141592653589793 |
+--------------------+-------------------+
1 row in set (0.00 sec)

2、DEGREES(x) 将参数 x 由弧度转化为角度。

mysql> SELECT DEGREES(PI()), DEGREES(PI() / 2);
+---------------+-------------------+
| DEGREES(PI()) | DEGREES(PI() / 2) |
+---------------+-------------------+
|           180 |                90 |
+---------------+-------------------+
1 row in set (0.00 sec)

3、SIN(x) 返回 x 正弦,其中 x 为弧度值。

mysql> SELECT SIN(1), ROUND(SIN(PI()));
+--------------------+------------------+
| SIN(1)             | ROUND(SIN(PI())) |
+--------------------+------------------+
| 0.8414709848078965 |                0 |
+--------------------+------------------+
1 row in set (0.00 sec)

4、ASIN(x) 返回 x 的反正弦,即正弦为 x 的值。若 x 不在 -11 的范围之内,则返回 NULL

mysql> SELECT ASIN(0.8414709848078965), ASIN(3);
+--------------------------+---------+
| ASIN(0.8414709848078965) | ASIN(3) |
+--------------------------+---------+
|                        1 |    NULL |
+--------------------------+---------+
1 row in set (0.00 sec)

5、COS(x) 返回 x 的余弦,其中 x 为弧度值。

mysql> SELECT COS(0),COS(PI()),COS(1);
+--------+-----------+--------------------+
| COS(0) | COS(PI()) | COS(1)             |
+--------+-----------+--------------------+
|      1 |        -1 | 0.5403023058681398 |
+--------+-----------+--------------------+
1 row in set (0.00 sec)

6、ACOS(x) 返回 x 的反余弦,即余弦是 x 的值。若 x 不在 -1~1 的范围之内,则返回 NULL

mysql> SELECT ACOS(1),ACOS(0), ROUND(ACOS(0.5403023058681398))Mysql中常用的函数汇总

MySQL常用函数汇总

MySQL常用函数汇总——字符串操作函数

九MySQL 常用函数汇总

九MySQL 常用函数汇总

mysql常用的函数