2024 年 9 月 26 日:PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不受支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

第 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. inetcidr
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.14.5. jsonb 下标
8.14.6. 转换
8.14.7. jsonpath 类型
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. 对象标识符类型
8.20. pg_lsn 类型
8.21. 伪类型

PostgreSQL 提供了丰富的原生数据类型供用户使用。用户可以使用 CREATE TYPE 命令向 PostgreSQL 添加新的类型。

表 8.1 显示了所有内置的通用数据类型。在“别名”列中列出的大多数备选名称是 PostgreSQL 出于历史原因在内部使用的名称。此外,一些内部使用的或已弃用的类型也可使用,但此处未列出。

表 8.1. 数据类型

名称 别名 描述
bigint int8 带符号的八字节整数
bigserial serial8 自动增量的八字节整数
bit [ (n) ]   固定长度的位串
bit varying [ (n) ] varbit [ (n) ] 可变长度的位串
boolean bool 逻辑布尔值(true/false)
box   平面上的矩形框
bytea   二进制数据(“字节数组”)
character [ (n) ] char [ (n) ] 固定长度的字符字符串
character varying [ (n) ] varchar [ (n) ] 可变长度的字符字符串
cidr   IPv4 或 IPv6 网络地址
circle   平面上的圆
date   日历日期(年、月、日)
double precision float8 双精度浮点数(8 字节)
inet   IPv4 或 IPv6 主机地址
integer int, int4 带符号的四字节整数
interval [ fields ] [ (p) ]   时间跨度
json   文本 JSON 数据
jsonb   二进制 JSON 数据,已分解
line   平面上的无限线
lseg   平面上的线段
macaddr   MAC(媒体访问控制)地址
macaddr8   MAC(媒体访问控制)地址(EUI-64 格式)
money   货币金额
numeric [ (p, s) ] decimal [ (p, s) ] 可选择精度的精确数值
path   平面上的几何路径
pg_lsn   PostgreSQL 日志序列号
pg_snapshot   用户级事务 ID 快照
point   平面上的几何点
polygon   平面上的闭合几何路径
real float4 单精度浮点数(4 字节)
smallint int2 带符号的双字节整数
smallserial serial2 自动增量的双字节整数
serial serial4 自动增量的四字节整数
text   可变长度的字符字符串
time [ (p) ] [ without time zone ]   一天中的时间(无时区)
time [ (p) ] with time zone timetz 一天中的时间,包括时区
timestamp [ (p) ] [ without time zone ]   日期和时间(无时区)
timestamp [ (p) ] with time zone timestamptz 日期和时间,包括时区
tsquery   文本搜索查询
tsvector   文本搜索文档
txid_snapshot   用户级事务 ID 快照(已弃用;请参阅 pg_snapshot
uuid   通用唯一标识符
xml   XML 数据

兼容性

以下类型(或其拼写)由SQL指定:bigintbitbit varyingbooleancharcharacter varyingcharactervarchardatedouble precisionintegerintervalnumericdecimalrealsmallinttime(带或不带时区)、timestamp(带或不带时区)、xml

每种数据类型都有由其输入和输出函数确定的外部表示形式。许多内置类型具有明显的外部格式。但是,某些类型要么是 PostgreSQL 独有的,例如几何路径,要么具有多种可能的格式,例如日期和时间类型。一些输入和输出函数不可逆,即,与原始输入相比,输出函数的结果可能会丢失精度。

提交更正

如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或需要进一步说明,请使用 此表单 报告文档问题。