PostgreSQL中支持的数据类型总结归纳

发布于:2025-05-16 ⋅ 阅读:(16) ⋅ 点赞:(0)

PostgreSQL 支持极其丰富的数据类型,涵盖基础类型、结构化类型、几何类型、网络类型等,甚至允许通过扩展自定义类型。以下是其支持的主要数据类型分类及示例:


​一、基础数据类型​

​类别​ ​类型​ ​描述​ ​示例值​
​数值类型​ SMALLINT 2字节整数,范围-32768~32767 123
INTEGER / INT 4字节整数(常用) -42
BIGINT 8字节大整数 9223372036854775807
DECIMAL(p,s) / NUMERIC 精确小数,p为精度,s为小数位数 123.99
REAL 4字节浮点数 3.14159
DOUBLE PRECISION 8字节浮点数 1.2345678901234e+10
SERIAL / BIGSERIAL 自增整数(常用于主键) 1, 2, 3...
​字符类型​ VARCHAR(n) 变长字符串,n为最大长度 'hello'
CHAR(n) 定长字符串,不足补空格 'abc ' (n=5)
TEXT 无限长度文本(推荐代替VARCHAR 'Lorem ipsum...'
​二进制类型​ BYTEA 二进制数据(如图片、文件) '\xDEADBEEF'
​布尔类型​ BOOLEAN 真/假值 TRUEFALSENULL

​二、日期与时间类型​

​类型​ ​描述​ ​示例值​
DATE 日期(年月日) '2023-10-01'
TIME 时间(时分秒) '14:30:00'
TIMESTAMP 日期+时间(无时区) '2023-10-01 14:30:00'
TIMESTAMPTZ 带时区的日期时间(推荐) '2023-10-01 14:30:00+08'
INTERVAL 时间间隔 '1 day 2 hours'

​三、结构化与特殊类型​

​类型​ ​描述​ ​示例值​
​数组类型​ 同类型元素的数组 {1, 2, 3}{{'a','b'}, {'c','d'}}
​JSON/JSONB​ JSON(文本存储)、JSONB(二进制,推荐) '{"name": "Alice", "age": 30}'
​UUID​ 全局唯一标识符 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
​枚举类型​ 自定义枚举(需CREATE TYPE定义) 'RED''GREEN'
​范围类型​ 表示数值/日期范围 [1, 10)'[2023-01-01, 2023-12-31]'
​复合类型​ 类似结构体的自定义类型 (1, 'Alice')

​四、空间与网络类型​

​类型​ ​描述​ ​依赖扩展​
​几何类型​ 点、线、多边形等(需PostGIS扩展) POINT(10 20)POLYGON((0 0, 1 1, 1 0))
​网络地址类型​ IPv4/IPv6/MAC地址 '192.168.1.1/24''2001:db8::1'
​全文检索类型​ TSVECTOR(分词)、TSQUERY(查询) 'cat & dog'::TSQUERY

​五、其他高级类型​

​类型​ ​描述​ ​示例/用途​
XML XML文档存储 <book><title>SQL</title></book>
HSTORE 键值对存储(需hstore扩展) 'a=>1, b=>2'
​自定义类型​ 通过CREATE TYPE定义 适应业务需求的特殊数据结构

​六、类型使用示例​


sql

-- 创建包含多种类型的表
CREATE TABLE example (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    salary DECIMAL(10,2),
    active BOOLEAN DEFAULT TRUE,
    metadata JSONB,
    schedule TIMESTAMPTZ[],
    ip_address INET
);

-- 插入数据
INSERT INTO example (name, salary, metadata, schedule, ip_address)
VALUES (
    'Alice',
    75000.50,
    '{"department": "HR", "skills": ["SQL", "Python"]}',
    ARRAY['2023-10-01 09:00:00+08', '2023-10-02 10:00:00+08'],
    '192.168.1.100'
);

​总结​

PostgreSQL 的数据类型系统​​远超大多数关系型数据库​​,其设计兼顾了灵活性(如JSONB)、精确性(如DECIMAL)和扩展性(如PostGIS)。开发者可以根据业务需求选择最合适的类型,甚至通过扩展实现定制化存储方案。


网站公告

今日签到

点亮在社区的每一天
去签到