数据类型
数据类型#
OushuDB 拥有丰富的内置数据类型,用户还可以通过 CREATE TYPE 自定义新的类型。
下表显示了所有内置的泛用数据类型,在”别名”列里大多数都是因历史原因在 OushuDB 内部使用的可选名字。
表. 数据类型
名字 |
别名 |
描述 |
MAGMA |
ORC |
Hudi |
ROW |
---|---|---|---|---|---|---|
bigint |
int8 |
有符号8字节整数 |
Y |
Y |
Y |
Y |
bigserial |
serial8 |
自增8字节整数 |
Y |
Y |
Y |
Y |
bit [(n)] |
定长位串 |
N |
N |
N |
Y |
|
bit varying [(n)] |
varbit |
可变长位串 |
N |
N |
N |
Y |
boolean |
bool |
逻辑布尔值(真/假) |
Y |
Y |
Y |
Y |
box |
平面上的矩形 |
N |
N |
N |
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 |
N |
Y |
|
circle |
平面上的圆 |
N |
N |
N |
Y |
|
date |
日历日期(年, 月, 日) |
Y |
Y |
Y |
Y |
|
double precision |
float8 |
双精度浮点数(8字节) |
Y |
Y |
Y |
Y |
inet |
IPv4 或 IPv6 主机地址 |
N |
N |
N |
Y |
|
integer |
int, int4 |
有符号 4 字节整数 |
Y |
Y |
Y |
Y |
interval [(p)] |
时间间隔 |
N |
N |
N |
Y |
|
lseg |
平面上的线段 |
N |
N |
N |
Y |
|
macaddr |
MAC (Media Access Control)地址 |
N |
N |
N |
Y |
|
money |
货币金额 |
N |
N |
N |
Y |
|
numeric [(p,s)] |
decimal [(p,s)] |
可选精度的准确数值数据类型 |
Y |
Y |
Y |
Y |
path |
平面上的几何路径 |
N |
N |
N |
Y |
|
point |
平面上的点 |
N |
N |
N |
Y |
|
polygon |
平面上的封闭几何路径 |
N |
N |
N |
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 |
Y |
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 所特有的,比如几何路径,要么是有若干种不同的格式,比如日期和时间类型。 有些输入和输出函数是不可逆的,即与原始输入相比,输出函数的结果可能会丢失精度。