主题
数据类型介绍
数值类型
PostgreSQL 提供多种精度的数值类型,适用于不同的存储与计算需求。
类型 | 描述 | 示例值 |
---|---|---|
smallint | 2 字节整数 | 100 |
integer | 4 字节整数 | 100000 |
bigint | 8 字节整数 | 922337203 |
decimal / numeric | 精确小数 | 1234.56 |
real | 单精度浮点数 | 3.14 |
double precision | 双精度浮点 | 3.14159265 |
字符类型
用于存储文本数据,支持多语言与 Unicode。
类型 | 描述 | 示例值 |
---|---|---|
char(n) | 定长字符串 | 'abc ' |
varchar(n) | 可变长,最多 n 个字符 | 'hello' |
text | 无限长度字符串 | 'PostgreSQL' |
建议使用
text
替代varchar
,除非有长度限制需求。
日期与时间类型
PostgreSQL 拥有强大的时间处理功能。
类型 | 描述 | 示例值 |
---|---|---|
date | 日期 | 2025-01-01 |
timestamp | 无时区时间戳 | 2025-01-01 12:34:56 |
timestamptz | 带时区时间戳 | 2025-01-01 12:34:56+08 |
interval | 时间间隔 | 1 day 2 hours |
布尔类型
sql
-- 只允许 true/false 或 't'/'f'
is_active BOOLEAN DEFAULT true;
枚举类型
适合状态值等固定集合。
sql
CREATE TYPE status AS ENUM ('pending', 'active', 'archived');
CREATE TABLE orders (
id SERIAL,
state status
);
数组类型
PostgreSQL 支持任意类型的数组。
sql
tags TEXT[];
numbers INTEGER[];
JSON 与 JSONB 类型
json
:保持原始结构,存储空间大,查询较慢jsonb
:二进制格式,支持索引和高效查询
sql
data JSONB NOT NULL;
UUID 类型
用于唯一标识对象,推荐用于主键。
sql
id UUID DEFAULT gen_random_uuid();
需启用
pgcrypto
扩展或使用uuid-ossp
自定义类型
PostgreSQL 支持用户定义复杂类型,例如复合类型或域(domain)类型,增强结构表达能力。
小结
PostgreSQL 提供丰富且强大的数据类型系统,涵盖结构化、半结构化、多维数据等多种需求,极大增强了数据模型的表达能力。