第 8 章 数据类型

目录

8.1. 数字类型
8.1.1. 整数类型
8.1.2. 任意精度数字
8.1.3. 浮点类型
8.1.4. 序数类型
8.2. 货币类型
8.3. 字符类型
8.4. 二进制数据类型
8.4.1. bytea的十六进制格式
8.4.2. bytea的逃逸格式
8.5. 日期/时间类型
8.5.1. 日期/时间输入
8.5.2. 日期/时间输出
8.5.3. 时区
8.5.4. 间隔输入
8.5.5. 间隔输出
8.6. 布尔类型
8.7. 枚举类型
8.7.1. 枚举类型的声明
8.7.2. 排序
8.7.3. 类型安全性
8.7.4. 实现细节
8.8. 几何类型
8.8.1. 点
8.8.2. 线
8.8.3. 线段
8.8.4. 方框
8.8.5. 路径
8.8.6. 多边形
8.8.7. 圆
8.9. 网络地址类型
8.9.1. inet
8.9.2. cidr
8.9.3. inet vs. cidr
8.9.4. macaddr
8.9.5. macaddr8
8.10. 位串类型
8.11. 文本搜索类型
8.11.1. tsvector
8.11.2. tsquery
8.12. UUID类型
8.13. XML类型
8.13.1. 创建XML值
8.13.2. 编码处理
8.13.3. 访问XML值
8.14. JSON 类型
8.14.1. JSON 输入和输出语法
8.14.2. 有效地设计 JSON 文档
8.14.3. jsonb 包含和存在
8.14.4. jsonb 索引
8.15. 数组
8.15.1. 数组类型的定义
8.15.2. 数组值输入
8.15.3. 访问数组
8.15.4. 修改数组
8.15.5. 在数组中搜索
8.15.6. 数组输入和输出语法
8.16. 复合类型
8.16.1. 复合类型的声明
8.16.2. 构造组合值
8.16.3. 访问复合类型
8.16.4. 修改复合类型
8.16.5. 在查询中使用复合类型
8.16.6. 复合类型输入和输出语法
8.17. 范围类型
8.17.1. 内建范围类型
8.17.2. 例子
8.17.3. 包含和排除边界
8.17.4. 无限(无界)范围
8.17.5. 范围输入/输出
8.17.6. 构造范围
8.17.7. 离散范围类型
8.17.8. 定义新的范围类型
8.17.9. 索引
8.17.10. 范围上的约束
8.18. 对象标识符类型
8.19. pg_lsn Type
8.20. 伪类型

PostgreSQL有着丰富的本地数据类型可用。用户可以使用CREATE TYPE命令为 PostgreSQL增加新的数据类型。

表 8.1显示了所有内建的普通数据类型。大部分在别名列里列出的可选名字都是因历史原因 被PostgreSQL在内部使用的名字。另外,还有一些内部使用的或者废弃的类型也可以用,但没有在这里列出。

表 8.1. 数据类型

名字别名描述
bigintint8有符号的8字节整数
bigserialserial8自动增长的8字节整数
bit [ (n) ] 定长位串
bit varying [ (n) ]varbit变长位串
booleanbool逻辑布尔值(真/假)
box 平面上的普通方框
bytea 二进制数据(字节数组
character [ (n) ]char [ (n) ]定长字符串
character varying [ (n) ]varchar [ (n) ]变长字符串
cidr IPv4或IPv6网络地址
circle 平面上的圆
date 日历日期(年、月、日)
double precisionfloat8双精度浮点数(8字节)
inet IPv4或IPv6主机地址
integerint, int4有符号4字节整数
interval [ fields ] [ (p) ] 时间段
json 文本 JSON 数据
jsonb 二进制 JSON 数据,已分解
line 平面上的无限长的线
lseg 平面上的线段
macaddr MAC(Media Access Control)地址
macaddr8 MAC (Media Access Control) 地址 (EUI-64 格式)
money 货币数量
numeric [ (p, s) ]decimal [ (p, s) ]可选择精度的精确数字
path 平面上的几何路径
pg_lsn PostgreSQL日志序列号
point 平面上的几何点
polygon 平面上的封闭几何路径
realfloat4单精度浮点数(4字节)
smallintint2有符号2字节整数
smallserialserial2自动增长的2字节整数
serialserial4自动增长的4字节整数
text 变长字符串
time [ (p) ] [ without time zone ] 一天中的时间(无时区)
time [ (p) ] with time zonetimetz一天中的时间,包括时区
timestamp [ (p) ] [ without time zone ] 日期和时间(无时区)
timestamp [ (p) ] with time zonetimestamptz日期和时间,包括时区
tsquery 文本搜索查询
tsvector 文本搜索文档
txid_snapshot 用户级别事务ID快照
uuid 通用唯一标识码
xml XML数据

兼容性

下列类型(或者及其拼写)是SQL指定的:bigintbitbit varyingbooleancharcharacter varyingcharactervarchardatedouble precisionintegerintervalnumericdecimalrealsmallinttime(有时区或无时区)、timestamp(有时区或无时区)、xml

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