数据类型介绍
数值类型
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 |
布尔类型
-- 只允许 true/false 或 't'/'f'
is_active BOOLEAN DEFAULT true;
`
枚举类型
适合状态值等固定集合。
CREATE TYPE status AS ENUM ('pending', 'active', 'archived');
CREATE TABLE orders (
id SERIAL,
state status
);
数组类型
PostgreSQL 支持任意类型的数组。
tags TEXT[];
numbers INTEGER[];
JSON 与 JSONB 类型
json:保持原始结构,存储空间大,查询较慢jsonb:二进制格式,支持索引和高效查询
data JSONB NOT NULL;
UUID 类型
用于唯一标识对象,推荐用于主键。
id UUID DEFAULT gen_random_uuid();
需启用
pgcrypto扩展或使用uuid-ossp
自定义类型
PostgreSQL 支持用户定义复杂类型,例如复合类型或域(domain)类型,增强结构表达能力。
小结
PostgreSQL 提供丰富且强大的数据类型系统,涵盖结构化、半结构化、多维数据等多种需求,极大增强了数据模型的表达能力。
相关内容
- CTE 与递归 介绍 PostgreSQL 中的公用表表达式 (CTE) 和递归查询,帮助开发者处理复杂的查询场景,简化查询结构和逻辑。
- JSON 操作 介绍 PostgreSQL 中的 JSON 操作,帮助开发者在数据库中高效存储、查询和操作 JSON 数据类型。
- 窗口函数 介绍 PostgreSQL 中的窗口函数,帮助开发者在查询中进行基于窗口的计算,如排名、聚合、分区等操作,以提升查询的灵活性与复杂性。
- 默认值与检查 介绍 PostgreSQL 中的默认值与检查约束,帮助开发者理解如何确保列值的默认填充和对数据进行有效性检查。
- 外键与级联 介绍 PostgreSQL 中的外键与级联操作,帮助开发者理解如何维护表之间的关系,并确保数据一致性。
- 主键与唯一约束 介绍 PostgreSQL 中的主键与唯一约束,帮助开发者理解如何确保数据的唯一性和完整性,避免数据重复。