数值函数列表

正如我们上面所说,DBMS 仅仅存储某种类型的数据是不够的,它还需要支持对这些类型的数据进行广泛的超快速操作。

而且,如您所知,所有 DBMS 都支持各种数字类型和对它们的操作。今天,您将熟悉其中最受欢迎的。

MySQL 中的所有数字函数都可以有条件地分为 5 组:

  • 算术运算
  • 位操作
  • 舍入函数
  • 代数函数
  • 三角函数

顺便说一句,由于使用了 Java 语言,您对其中的许多内容都很熟悉,所以我认为您不会对它们感到惊讶。但让我们按顺序开始。

可以在此处找到完整的功能列表。

算术运算

原则上没有什么意外,所有与其他地方相同的标准操作:

# 例子
1个 +, -, *, / 2+2*2 加法、减法、乘法、除法(不完美!)
2个 % 13% 5 除法余数
3个 模组 13MOD5 除法余数
4个 分区 13 分区 5 除以整数

有趣的是:当两个整数相除时,你得到一个实数。要除以整数,您需要使用 DIV 运算符。

如果您想得到除以整数的余数,那么您需要使用 MOD 或 % 运算符,就像在 Java 语言中一样。我不会举例子,因为对我来说,这里的一切都是显而易见的。

位操作

您还可以在 SQL 中对数字执行按位运算,这与在 Java 中非常相似。尽管有细微差别。可用位操作列表如下表所示:

# 例子 笔记
1个 & 0b1111 & 0b1000 按位与
2个 | 0b1111 | 0b0001 按位或
3个 ^ 0b1111^0b1111 位异或
4个 ~ ~0b1111 按位反转
5个 >> 128 >> 5 位右移
6个 << 2 << 5 位左移
7 BIT_COUNT() BIT_COUNT(255) 返回为 1 的位数

在 MySQL 8.0 版本之前,只能对 BIGINT 数据类型进行此类操作,该数据类型为 64 位长,类似于 Java 的 long 类型。然而,在 MySQL 8.0(我们正在考虑)中,这个概念发生了变化。现在这些操作可以在特殊的二进制类型上执行:

  • 二进制
  • 可变二进制
  • 还有 BLOB 类型(字节数组)

所有其他类型都简单地转换为 BIGINT 类型,并像以前一样执行操作(仅在前 64 位上)。

舍入函数

对于 MySQL 中的舍入函数,您使用了非常熟悉的函数。下表列出了它们:

# 例子 笔记
1个 天花板(),天花板() 天花板 (5.1) = 6 四舍五入实数
2个 地面() 地板(5.9)= 5 向下舍入实数
3个 圆形的() 回合(4.1)= 4 将实数四舍五入为最接近的整数
4个 截短() 截断(4.123,2)= 4.12 将数字截断到 N 位小数
5个 兰德() 0.61914388706828 返回 0 到 1 之间的随机实数
6个 兰德(N) 0.93845168309142 返回一个介于 0 和 1 之间的随机实数。N 用作种子值

自从第一次学习 Java 以来,您已经熟悉了所有舍入函数。此处只有 TRUNCATE() 和 RANDOM(N) 函数值得关注。

TRUNCATE (number, quantity)函数的第一个参数是一个实数,第二个参数是要保留的小数位数。该数字被修剪为所需的小数位数。

至于 RAND(N) 函数,事情有点复杂。您可能知道,计算机无法生成随机数。相反,它会生成一个所谓的伪随机数序列。也就是看一个数,不清楚是不是随机的,但是数列可能已经近似于随机了。开发人员通过生成与随机数非常相似的数字序列来利用这一点。

在这种情况下,序列的每个新数字都是根据基于该序列的前一个数字的棘手规则生成的。因此,如果你将某个起始数(也称为种子)传递给随机数生成算法,那么每次你都会收到相同的随机数序列