Skip to content

第 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. 类型
8.13. 类型
8.13.1. 创建 XML 值
8.13.2. 编码处理
8.13.3. 访问 XML 值
8.14. 类型
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. 数据类型

名称别名描述
bigintint8带符号的八字节整数
bigserialserial8自增八字节整数
bit [ (n) ]固定长度位字符串
bit varying [ (n) ]varbit [ (n) ]可变长度位字符串
布尔值布尔逻辑布尔值(真/假)
平面上的矩形框
bytea二进制数据(字节数组
字符 [ (n) ]char [ (n) ]固定长度字符字符串
可变长度字符字符串 [ (n) ]varchar [ (n) ]可变长度字符字符串
cidrIPv4 或 IPv6 网络地址
平面上的圆
日期日历日期(年、月、日)
双精度float8双精度浮点数(8 字节)
inetIPv4 或 IPv6 主机地址
整数int, int4带符号四字节整数
间隔 [ 字段 ] [ (p) ]时间跨度
json文本 JSON 数据
jsonb二进制 JSON 数据,已分解
线平面上的无限线
lseg平面上的线段
macaddrMAC(媒体访问控制)地址
macaddr8MAC(媒体访问控制)地址(EUI-64 格式)
货币货币金额
数字 [ (p, s) ]十进制 [ (p, s) ]可选择精度的精确数字
路径平面上的几何路径
pg_lsnPostgreSQL 日志序列号
pg_snapshot用户级事务 ID 快照
平面上的几何点
多边形平面上的闭合几何路径
实数float4单精度浮点数(4 字节)
小整数int2带符号两字节整数
小序列serial2自动增量两字节整数
序列serial4自动增量四字节整数
文本可变长度字符字符串
时间 [ (p) ] [ 无时区 ]一天中的时间(无时区)
时间 [ (p) ] 带时区timetz时间,包括时区
时间戳 [ (p) ] [ 不带时区 ]日期和时间(无时区)
时间戳 [ (p) ] 带时区timestamptz日期和时间,包括时区
tsquery文本搜索查询
tsvector文本搜索文档
txid_snapshot用户级事务 ID 快照(已弃用;请参见 pg_snapshot
uuid通用唯一标识符
xmlXML 数据

兼容性

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

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