教程 postgresql tutorial

数据类型介绍

数值类型

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 提供丰富且强大的数据类型系统,涵盖结构化、半结构化、多维数据等多种需求,极大增强了数据模型的表达能力。