MySQL学习-函数(一)

146 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第21天,点击查看活动详情

前言

上篇我们做了一些多表查询的练习。有兴趣的小伙伴可以阅读(# MySQL学习-多表查询(八))。
下面继续学习MySQL中的函数。

函数定义

函数,在java开发中又被叫做方法,我们都很熟悉。它把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在SQL中我们也可以使用函数对检索出来的数据进行函数操作。使用这些函数,可以极大地提高用户对数据库的管理效率。

从函数定义的角度出发,我们可以将函数分为内置函数和自定义函数。

不同DBMS函数的差异

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

MySQL的内置函数

MySQL提供的内置函数从实现的功能角度可以分为数值函数、字符串函数、日期和时间函数、流程控制函数、加密和解密函数、获取MySQL信息函数,聚合函数等。这里,将这些丰富的内置函数再分为两类:单行函数、聚合函数(或分组函数,或分组函数)。

单行函数

  • 操作数据对象
  • 接受参数返回一个结果
  • 只对一行进行变换
  • 每行返回一个结果
  • 可以嵌套
  • 参数可以是一列或一个值

数值函数

基本函数

函数用法
ABS(x)返回x的绝对值
SIGN(x)返回x的符号。正数返回1,负数返回-1,0返回0
PI()返回圆周率的值
CEIL(x),CEILING(x)返回大于或等于某个值的最小整数
FLOOR(x)返回小于或等于某个值的最大整数
LEAST(e1, e2, e3...)返回列表中的最小值
GREATEST(e1, e2, e3...)返回列表中的最大值
MOD(x, y)返回x除以y后的余数
RAND()返回0-1的随机值
RAND(x)返回0-1的随机值,其中x的值用作种子值,相同的x值会产生相同的随机数
ROUND(x)返回一个对x的值进行四舍五入后,最接近于x的整数
ROUND(x, y)返回一个对x的值进行四舍五入后,最接近于x的值,并保留小数点后面Y位
TRUNCATE(x, y)返回数字x截断为y位小数的结果
SQRT(x)返回x的平方根。当x的值为负数时,返回NULL
示例一
SELECT ABS(-123), ABS(32), SIGN(-23), SIGN(43), PI()
FROM DUAL

得出结果如下:

ABS(-123)ABS(32)SIGN(-23)SIGN(43)PI()
12332-113.141593

上面演示了一些函数的运算,都好理解。

示例二
SELECT CELL(32.32), CEILING(-43.23), FLOOR(32.32),
FLOOR(-43.23), MOD(12, 5)
FROM DUAL

得出结果如下:

CELL(32.32)CEILING(-43.23)FLOOR(32.32)FLOOR(-43.23)MOD(12, 5)
33-4332-442

CELL或者CEILING返回大于等于32.32的值中最小的整数,也就是33。
大于等于-43.23的最小整数也就是-43。
FLOOR返回小于等于32.32的值中最大的整数,也就是32。
小于等于-43.23的最大整数,也就是-44。
MOD返回12除以5的余数,也就是2。

今天先学到这里,明天继续。