数据类型

OushuDB 拥有丰富的内置数据类型,用户还可以通过 CREATE TYPE 自定义新的类型。

下表显示了所有内置的泛用数据类型,在”别名”列里大多数都是因历史原因在OushuDB 内部使用的可选名字。

表. 数据类型

名字 别名 描述 MAGMA ORC PARQUET AO
bigint int8 有符号8字节整数 Y Y Y Y
bigserial serial8 自增8字节整数 Y Y Y Y
bit [(n)] 定长位串 N N Y Y
bit varying [(n)] varbit 可变长位串 N N Y Y
boolean bool 逻辑布尔值(真/假) Y Y Y Y
box 平面上的矩形 N N Y Y
bytea 二进制数据(“字节数组”) Y Y Y Y
character varying [(n)] varchar [(n)] 可变长字符串 Y Y Y Y
character [(n)] char [(n)] 定长字符串 Y Y Y Y
cidr IPv4 或 IPv6 网络地址 N N Y Y
circle 平面上的圆 N N Y Y
date 日历日期(年, 月, 日) Y Y Y Y
double precision float8 双精度浮点数(8字节) Y Y Y Y
inet IPv4 或 IPv6 主机地址 N N Y Y
integer int, int4 有符号 4 字节整数 Y Y Y Y
interval [(p)] 时间间隔 N N Y Y
lseg 平面上的线段 N N Y Y
macaddr MAC (Media Access Control)地址 N N Y Y
money 货币金额 N N Y Y
numeric [(p,s)] decimal [(p,s)] 可选精度的准确数值数据类型 Y Y Y Y
path 平面上的几何路径 N N Y Y
point 平面上的点 N N Y Y
polygon 平面上的封闭几何路径 N N Y Y
real float4 单精度浮点数(4 字节) Y Y Y Y
smallint int2 有符号 2 字节整数 Y Y Y Y
serial serial4 自增 4 字节整数 Y Y Y Y
text 可变长字符串 Y Y Y Y

time [(p)]

[without time zone]

一天中的时刻(无时区) Y Y Y Y

time [(p)]

with time zone

timetz 一天中的时刻,含时区 N N Y Y

timestamp [(p)]

[without time zone]

日期与时刻(无时区) Y Y Y Y

timestamp [(p)]

with time zone

timestamptz 日期与时刻,含时区 N Y Y Y

兼容性

下列类型(或那样的拼写)是SQL规范声明的: bit, bit varying, boolean, char, character varying, character, varchar, date, double precision, integer, interval, numeric, decimal, real, smallint, time (with or without time zone), timestamp (with or without time zone).

每种数据类型都有一个由其输入和输出函数决定的外部表现形式。 许多内置的类型有明显的外部格式。不过,一些数据类型要么是OushuDB 所特有的,比如几何路径,要么是有若干种不同的格式,比如日期和时间类型。 有些输入和输出函数是不可逆的,即与原始输入相比,输出函数的结果可能会丢失精度。