数字类型
HGDB 有着丰富的本地数据类型可用,用户也可以使用 CREATE TYPE
命令为 HGDB 增加新的数据类型。
数字类型由 2、4 或 8 字节的整数以及 4 或 8 字节的浮点数和可选精度小数组成。下表列出了数字类型的所有可用类型。
名字 | 存储尺寸 | 描述 | 范围 |
---|---|---|---|
smallint | 2字节 | 小范围整数 | -32768 to +32767 |
integer | 4字节 | 整数的典型选择 | -2147483648 to +2147483647 |
bigint | 8字节 | 大范围整数 | -9223372036854775808 to +9223372036854775807 |
decimal | 可变 | 用户指定精度,精确 | 最高小数点前 131072 位,以及小数点后16383 位 |
numeric(precision,scale) | 可变 | 用户指定精度,精确 | 最高小数点前 131072位,以及小数点后16383 位 |
real | 4字节 | 可变精度,不精确 | 6 位十进制精度 |
double precision | 8字节 | 可变精度,不精确 | 15 位十进制精度 |
smallserial | 2字节 | 自动增加的小整数 | 1 到 32767 |
serial | 4字节 | 自动增加的整数 | 1 到 2147483647 |
bigserial | 8字节 | 自动增加的大整数 | 1 到9223372036854775807 |
整数类型
类型 smallint 、integer 和 bigint 存储各种范围的全部是数字的数,常用的类型是 integer,因为它提供了在范围、存储空间和性能之间的最佳平 衡。一般只有在磁盘空间紧张的时候才使用 smallint 类型,SQL 只声明了整数类型 integer(或 int)、smallint 和 bigint 。类型 int2、int4 和 int8 都是扩展
任意精度类型
numeric(precision,scale)、decimal、real、double precision。numeric 的 precision 是数中有效位的位数,包括小数点两边的数字,scale 是小数部分的位数。numeric 建议用于货币金额和其他要求计算准确的数量。类型 decimal 和 numeric 是等效的,在圆整时,numeric 类型会圆整到远离零的整数,而大部分情况下 real 和 double precision 类型会圆整到最近的偶数。
浮点类型
数据类型 real 和 double precision 是不精确的、变精度的数字类型。 如果你要求准确的存储和计算(例如计算货币金额),应使用 numeric 类 型。
序数类型
smallserial 、serial 和 bigserial 类型不是真正的类型,它们只是为了创建唯一 标识符列而存在的方便符号(类似其它一些数据库中支持的AUTO_INCREMENT 属性),例如
CREATE TABLE tablename ( |
注意:
因为 smallserial、serial 和 bigserial 是用序列实现的,所以即使没有删除过行, 在出现在列中的序列值可能有“空洞”或者间隙。如果一个从序列中分配的 值被用在一行中,即使该行最终没有被成功地插入到表中,该值也被“用掉” 了。例如,当插入事务回滚时就会发生这种情况。