数据库中的数据类型
数据库中的数据类型通常有很多种,也有不同的分类方法。例如最常见的数值型、字符型、日期时间型,也有不太常见的布尔型、枚举型、集合型等。要在DBMS中实现某种具体数据类型(例如最简单的INTEGER)的支持,我们可以从以下几个方面来考虑。
1. 数据类型的名称
数据类型名称可以出现在DDL语句中,也可以出现在INFORMATION_SCHEMA等返回的元信息中。
有的数据类型因为各种原因,还存在别名。
2. 数据类型的取值范围
这个也叫做值域。我们还需要设计好该类型的数据在运算时发生溢出、截断、舍入等的行为。
3. 数据类型的精度和标度(Precision和Scale)
对于整型数而言,标度总是0,精度可以是二进制的bit位数表示,也可能用十进制的数字位数表示。
对于浮点数而言,需要决定是否采用二进制精度,是否采用IEEE标准的浮点数,是单精度还是双精度等。
对于精确数而言,当然也需要决定最大支持的精度和标度。
对于字符型而言,标度也总是0,精度通常指的是字符数,但也有系统用的是字节数。既然是字符型,还得多考虑一下支持的字符集。
对于日期时间型而言,精度指的是秒在小数点后面的数字位数。
4. 数据类型上支持的操作
例如对于INTEGER类型和其他各种类型之间的加减乘数等操作。
5. 数据类型上支持的索引种类。
例如,很多系统都是不支持在大字段类型上创建B+树索引的,空间数据类型上通常需要创建空间索引。
6. 数据类型的输入输出格式
几乎所有的类型都能够以字符串的形式输出。数值类型的输入可以是数值常量,也可以是字符串,甚至而二进制串,十六进制串等。
7. 数据类型的网络传输格式
也就是DBMS服务器在和客户端接口之间传送不同数据类型的格式,例如可以用字符类型,也可以用RPC定义的二进制格式,甚至自己定义的二进制格式。
8. 数据类型在内存中的格式
9. 数据类型在外存中的格式
对于简单的整数类型,格式主要是字节顺序的问题。但是对于比较复杂的NUMEIRC类型,更重要的是考虑存储和操作效率了。