跳转到内容

PostgreSQL Table structure and data type

psql 命令行中,可以使用 \d 查看表结构:

\d 表名
\d students

输出内容包括:

  • 字段名(Column)

  • 数据类型(Type)

  • 是否可为空(Nullable)

  • 默认值(Default)

  • 索引 / 主键 / 约束


类型说明
SMALLINT2 字节
INTEGER / INT4 字节
BIGINT8 字节
SERIAL / BIGSERIAL自增主键
类型说明
REAL单精度
DOUBLE PRECISION双精度
NUMERIC / DECIMAL高精度(适合金融)

类型说明
CHAR(n)固定长度
VARCHAR(n)可变长度
TEXT不限长度(推荐)

类型说明
DATE日期
TIME时间
TIMESTAMP日期 + 时间
TIMESTAMPTZ带时区

BOOLEAN

取值:

  • TRUE
  • FALSE
  • NULL

类型说明
JSON原始存储
JSONB推荐(支持索引、查询更快)

INTEGER[]
TEXT[]

示例:

tags TEXT[]

CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');

类型说明
UUID唯一标识
BYTEA二进制数据
XMLXML 数据

CREATE TABLE sample_table (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INTEGER,
salary NUMERIC(10, 2),
birthday DATE,
hire_date TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE,
tags TEXT[],
address JSONB
);

  • 优先使用 TEXT 替代 VARCHAR

  • 金额使用 NUMERIC(避免精度问题)

  • JSON 优先用 JSONB

  • 时间推荐使用 TIMESTAMPTZ

  • 主键推荐 BIGSERIALUUID