PostgreSQL 数据类型

  • 以下为 PostgreSQL 主要数据类型详细说明:

类型分类 数据类型 描述 特别说明
数值类型 INTEGER, BIGINT, SMALLINT 整数类型,范围依次递增(231、263等) SERIAL 系列(如 BIGSERIAL)为自增序列类型,常用于主键
浮点型 REAL, DOUBLE PRECISION 单/双精度浮点数,精度分别为6位和15位 不适用于精确计算(如货币),推荐用 NUMERIC
字符类型 VARCHAR(n), TEXT 变长字符串(长度限制或无限制) TEXT 类型性能优于 VARCHAR,无需指定长度
日期/时间 DATE, TIMESTAMP, INTERVAL 存储日期、时间戳(带或不带时区)及时间间隔 TIMESTAMPTZ 自动转换为 UTC 存储
布尔类型 BOOLEAN 存储 TRUE/FALSE,支持 NULL 实际存储为1字节,非真/假时默认为 NULL
几何类型 GEOMETRY 存储空间数据(点、线、面等),需安装 PostGIS 扩展 支持空间函数(如 ST_Distance)和空间索引,格式为 WKT(如 POINT(0 0)
JSON/JSONB JSON, JSONB 存储结构化 JSON 数据,JSONB 为二进制格式,支持索引和高效查询 JSONB 自动去重、压缩空格,查询性能更优
网络地址 INET, CIDR, MACADDR 存储 IPv4/IPv6 地址、子网掩码和 MAC 地址 提供专用函数校验和操作网络地址(如子网包含判断)
UUID UUID 存储全局唯一标识符(128位),如 a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 需通过扩展生成(如 uuid-ossp),常用于分布式系统主键
  • 设置主键 ID 自增的方法

方法1:使用 SERIAL 类型

CREATE TABLE users (
  id SERIAL PRIMARY KEY,  -- 自动创建序列并关联,等价于 INTEGER 类型
  name TEXT
);

原理SERIAL 隐式创建名为 表名_id_seq 的序列,并通过 nextval() 自动递增。

方法2:自定义序列(SEQUENCE)

CREATE SEQUENCE user_id_seq START 1;  -- 创建序列
CREATE TABLE users (
  id INTEGER PRIMARY KEY DEFAULT nextval('user_id_seq'),  -- 手动关联序列
  name TEXT
);
ALTER SEQUENCE user_id_seq OWNED BY users.id;  -- 绑定序列到表字段

方法3:IDENTITY 列(PostgreSQL 10+)

CREATE TABLE users (
  id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,  -- 符合 SQL 标准
  name TEXT
);

特点:与 SERIAL 类似,但提供更严格的控制(如禁止手动插入 ID)。

重置自增值

ALTER SEQUENCE user_id_seq RESTART WITH 1000;  -- 将序列重置为1000

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容