PostgreSQL Table structure and data type
在 psql 命令行中,可以使用 \d 查看表结构:
\d 表名\d students输出内容包括:
-
字段名(Column)
-
数据类型(Type)
-
是否可为空(Nullable)
-
默认值(Default)
-
索引 / 主键 / 约束
常用数据类型
Section titled “常用数据类型”一、数值类型
Section titled “一、数值类型”| 类型 | 说明 |
|---|---|
| SMALLINT | 2 字节 |
| INTEGER / INT | 4 字节 |
| BIGINT | 8 字节 |
| SERIAL / BIGSERIAL | 自增主键 |
浮点 / 精确数
Section titled “浮点 / 精确数”| 类型 | 说明 |
|---|---|
| REAL | 单精度 |
| DOUBLE PRECISION | 双精度 |
| NUMERIC / DECIMAL | 高精度(适合金融) |
二、字符串类型
Section titled “二、字符串类型”| 类型 | 说明 |
|---|---|
| CHAR(n) | 固定长度 |
| VARCHAR(n) | 可变长度 |
| TEXT | 不限长度(推荐) |
三、时间类型
Section titled “三、时间类型”| 类型 | 说明 |
|---|---|
| DATE | 日期 |
| TIME | 时间 |
| TIMESTAMP | 日期 + 时间 |
| TIMESTAMPTZ | 带时区 |
四、布尔类型
Section titled “四、布尔类型”BOOLEAN取值:
- TRUE
- FALSE
- NULL
五、JSON 类型
Section titled “五、JSON 类型”| 类型 | 说明 |
|---|---|
| JSON | 原始存储 |
| JSONB | 推荐(支持索引、查询更快) |
六、数组类型
Section titled “六、数组类型”INTEGER[]TEXT[]示例:
tags TEXT[]七、枚举类型
Section titled “七、枚举类型”CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');八、其他常用类型
Section titled “八、其他常用类型”| 类型 | 说明 |
|---|---|
| UUID | 唯一标识 |
| BYTEA | 二进制数据 |
| XML | XML 数据 |
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 -
主键推荐
BIGSERIAL或UUID