枚举(enum)类型是一个静态、有序的集合构成的数据类型。可以使用CREATE TYPE命令创建,例如:
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TYPE
一个枚举值在磁盘上占4字节,其文本标签的长度受限于NAMEDATALEN设置(最多63字节)。枚举标签大小写敏感,空白敏感。
几何数据类型表示二维的空间物体,类型如下:
名字 | 存储尺寸 | 表示 | 描述 |
point | 16字节 | 平面上的点 | (x,y) |
line | 32字节 | 无限长的线 | {A,B,C} |
lseg | 32字节 | 有限线段 | ((x1,y1),(x2,y2)) |
box | 32字节 | 矩形框 | ((x1,y1),(x2,y2)) |
path | 16+16n字节 | 封闭路径(类似于多边形) | ((x1,y1),...) |
path | 16+16n字节 | 开放路径 | [(x1,y1),...] |
polygon | 40+16n字节 | 多边形(类似于封闭路径) | ((x1,y1),...) |
circle | 24字节 | 圆 | <(x,y),r> (center point and radius) |
GBase 8c提供用于存储 IPv4、IPv6 和 MAC 地址的数据类型,如下表所示:
名字 | 存储尺寸 | 描述 |
cidr | 7或19字节 | IPv4和IPv6网络 |
inet | 7或19字节 | IPv4和IPv6主机以及网络 |
macaddr | 6字节 | MAC地址 |
macaddr8 | 8 字节 | MAC 地址 (EUI-64 格式) |
用这些数据类型存储网络地址,可以进行输入错误检查报错及特殊操作符支持。
位串就是一串 1 和 0 的串,可以用于存储和可视化位掩码。GBase 8c提供两种类型的 SQL 位类型:bit(n)和bit varying(n),其中 n是一个正整数。下面是一个使用位串类型的例子:
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TYPE
CREATE TABLE test (a BIT(3), b BIT VARYING(5));
CREATE TABLE
INSERT INTO test VALUES (B'101', B'00');
INSERT 0 1
INSERT INTO test VALUES (B'10', B'101');
ERROR: bit string length 2 does not match type bit(3)
INSERT INTO test VALUES (B'10'::bit(3), B'101');
INSERT 0 1
SELECT * FROM test;
a | b
-----+-----
101 | 00
100 | 101
(2 rows)
GBase 8c提供两种数据类型支持全文搜索:tsvector类型和tsquery类型。tsvector类型表示一个为文本搜索优化的形式下的文档,tsquery类型表示一个文本查询。详见全文检索。
数据类型uuid存储由RFC 4122、ISO/IEC 9834-8:2005以及相关标准定义的通用唯一标识符(UUID)(某些系统将这种数据类型引用为全局唯一标识符GUID)。UUID因为其算法特殊性,很难发生重复,常被用于分布式系统唯一性标识符。标准的UUID类似于:
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
以及:
A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
XML数据类型可以被用来存储XML数据。
创建XML值语法:
XMLPARSE ( { DOCUMENT | CONTENT } value)
从xml生成字符串命令语法:
XMLSERIALIZE ( { DOCUMENT | CONTENT } value AS type )