预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。
第 8 章 数据类型
目录
PostgreSQL 提供了丰富的原生数据类型。用户可以使用 CREATE TYPE 命令向 PostgreSQL 添加新类型。
表 8.1 展示了所有内置的通用数据类型。“别名”列中列出的多数可选名称,都是 PostgreSQL 出于历史原因在内部使用的名称。此外,还有一些内部使用或已废弃的类型也可用,但未在此列出。
表 8.1. 数据类型
| 名字 | 别名 | 描述 |
|---|---|---|
bigint | int8 | 有符号的 8 字节整数 |
bigserial | serial8 | 自动递增的 8 字节整数 |
bit [ ( | 定长位串 | |
bit varying [ ( | varbit [ ( | 变长位串 |
boolean | bool | 逻辑布尔值(真/假) |
box | 平面上的矩形框 | |
bytea | 二进制数据(“字节数组”) | |
character [ ( | char [ ( | 定长字符串 |
character varying [ ( | varchar [ ( | 变长字符串 |
cidr | IPv4 或 IPv6 网络地址 | |
circle | 平面上的圆 | |
date | 日历日期(年、月、日) | |
double precision | float, float8 | 双精度浮点数(8 字节) |
inet | IPv4 或 IPv6 主机地址 | |
integer | int, int4 | 有符号 4 字节整数 |
interval [ | 时间段 | |
json | 文本 JSON 数据 | |
jsonb | 二进制 JSON 数据,已分解 | |
line | 平面上的无限直线 | |
lseg | 平面上的线段 | |
macaddr | MAC(媒体访问控制)地址 | |
macaddr8 | MAC(媒体访问控制)地址(EUI-64 格式) | |
money | 货币额 | |
numeric [ ( | decimal [ ( | 可选择精度的精确数值 |
path | 平面上的几何路径 | |
pg_lsn | PostgreSQL 日志序列号 | |
pg_snapshot | 用户级事务 ID 快照 | |
point | 平面上的几何点 | |
polygon | 平面上的封闭几何路径 | |
real | float4 | 单精度浮点数(4 字节) |
smallint | int2 | 有符号 2 字节整数 |
smallserial | serial2 | 自动递增的 2 字节整数 |
serial | serial4 | 自动递增的 4 字节整数 |
text | 变长字符串 | |
time [ ( | 一天中的时间(无时区) | |
time [ ( | timetz | 一天中的时间,包括时区 |
timestamp [ ( | 日期和时间(无时区转换) | |
timestamp [ ( | timestamptz | 日期和时间,包括时区转换 |
tsquery | 文本检索查询 | |
tsvector | 文本检索文档 | |
txid_snapshot | 用户级事务 ID 快照(已废弃;参见 pg_snapshot) | |
uuid | 通用唯一标识符 | |
xml | XML 数据 |
兼容性
下列类型(或它们的这些拼写形式)由 SQL 规定:bigint、bit、bit varying、boolean、char、character varying、character、varchar、date、double precision、integer、interval、json、numeric、decimal、real、smallint、time(有时区或无时区)、timestamp(有时区或无时区)、xml。
每种数据类型都有一种由其输入和输出函数决定的外部表示。许多内置类型的外部格式都很直观。不过,也有一些类型是 PostgreSQL 所特有的,例如几何路径;还有一些类型可能存在多种可能的格式,例如日期/时间类型。有些输入和输出函数并不可逆,也就是说,输出函数的结果与原始输入相比可能会丢失精度。