Greenplum 数据库数据类型

Greenplum 数据库数据类型

Greenplum 数据库有一套丰富的本地数据类型供用户使用。用户也可以使用 CREATE TYPE 命令定义新的数据类型。本参考手册对所有内置数据类型进行说明。除了这里列出的类型外,还有一些内部使用的数据类型,例如 oid (对象标识符),但这些不在本手册中介绍。

contrib 目录中的可选模块也可能安装新的数据类型。例如 hstore 模块引入了一种新数据类型和 连带函数来与 key-value 键值对一起工作。参见 hstorecitext 模块添加了一种大小写不敏感的文本数据类型。参见 citext

下面的数据类型在SQL中使用: bit, bit varying, boolean, character varying, varchar, character, char, date, double precision, integer, interval, numeric, decimal, real, smallint, time (带时区或不带时区), 以及 timestamp (带时区或不带时区)。

每一种数据类型都有一种外部表示格式,这由数据类型的输入函数和输出函数决定。许多内置数据类型有明显的外部格式。然而,几种特别的数据类型要么只存在于 PostgreSQL(以及 Greenplum 数据库),例如 geometric paths,要么有几种可能的表示格式,例如时间和日期类型。一些输入和输出函数是不可逆转的,也就是说,相比较原始输入,输出函数的结果可能存在精度损失。

表 1. Greenplum 数据库内置数据类型
名称 别名 大小 范围 说明
bigint int8 8 字节 -922337203​6854775808 到 922337203​6854775807 大范围整数
bigserial serial8 8 字节 1 到 922337203​6854775807 大范围自增型整数
bit [ (n) ]   n 位串常量 定长位串
bit varying [ (n) ]1 varbit 实际位数量 位串常量 变长位串
boolean bool 1 字节 true/false, t/f, yes/no, y/n, 1/0 逻辑布尔值(true/false)
box   32 字节 ((x1,y1),(x2,y2)) 平面内长方形 - 不能在分布键列使用中。
bytea1   1 字节 + 二进制字符串大小 8比特字符 序列 变长二进制字符串
character [ (n) ]1 char [ (n) ] 1 字节 + n 最长 n 个字符的字符串 定长,(输入不足时自动用)空白填充
character varying [ (n) ]1 varchar [ (n) ] 1 字节 + 字符串大小 最长 n 个字符的字符串 有限制的变长字符串
cidr   12 或 24 字节   IPv4 和 IPv6 网络地址
circle   24 字节 <(x,y),r> (中心坐标和半径) 平面内圆 - 不能在分布键列使用中。
date   4 字节 4713 BC - 294,277 AD 日历日期 (年, 月, 日)
decimal [ (p, s) ]1 numeric [ (p, s) ] 可变 无限制 用户指定精度,精度确切
double precision float8

float

8 字节 15位十进制数字精度 可变精度,精度不确切
inet   12 或 24 字节   IPv4 和 IPv6 主机和网络
integer int, int4 4 字节 -2147483648 to +2147483647 常用整数类型
interval [ fields ] [ (p) ]   16 字节 -178000000 年到 178000000 年 时间跨度(间隔)
json   1 字节 + json 大小 任意长度 json 不定长(无限制)
jsonb   ??? ??? ???
lseg   32 字节 ((x1,y1),(x2,y2)) 平面内线段 - 不能在分布键列使用中。
macaddr   6 字节   MAC 地址
money   8 字节 -92233720368547758.08 到 +92233720368547758.07 货币数量
path1   16+16n 字节 [(x1,y1),...] 平面内几何路径 - 不能在分布键列使用中。
point   16 字节 (x,y) 平面内几何点 - 不能在分布键列使用中。
polygon   40+16n 字节 ((x1,y1),...) 平面内封闭几何路径 - 不能在分布键列使用中。
real float4 4 字节 6 十进制数字精度 可变精度,精度不确切
serial serial4 4 字节 1 到 2147483647 自增型整数
smallint int2 2 字节 -32768 到 +32767 小范围整数
text1   1 字节 + 字符串长度 任意长度字符串 不定长(无限制)
time [ (p) ] [ without time zone ]   8 字节 00:00:00[.000000] - 24:00:00[.000000] 一天内的时间
time [ (p) ] with time zone timetz 12 字节 00:00:00+1359 - 24:00:00-1359 一天内的时间, 带时区
timestamp [ (p) ] [ without time zone ]   8 字节 4713 BC - 294,277 AD 日期和时间
timestamp [ (p) ] with time zone timestamptz 8 字节 4713 BC - 294,277 AD 日期和时间, 带时区
uuid   32 字节   RFC 4122, ISO/IEC 9834-8:2005 标准定义的通用唯一标识(UUID)
xml1   1 字节 + xml 大小 任意长度 xml 变长,无限制
txid_snapshot       用户级事务 ID 快照
1 对于变长数据类型,如果大于或等于 127 字节,需要(除数据本身外)额外 4 字节的存储空间(小于 127 字节时额外只需要 1 字节存储空间)。