
PostgreSQL 支持的数据类型
PostgreSQL 支持的所有数据类型,并对每种数据类型进行详细介绍。
数值类型(Numeric Types)
- 整数类型(Integer Types)
smallint
:2 字节的整数,范围 -32,768 到 32,767。integer
(或int
):4 字节的整数,范围 -2,147,483,648 到 2,147,483,647。bigint
:8 字节的整数,范围 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。serial
:自动递增的 4 字节整数,相当于integer
。bigserial
:自动递增的 8 字节整数,相当于bigint
。
- 精确小数类型(Exact Numeric Types)
numeric(p, s)
:可变精度的数值,p 表示精度,s 表示小数位数。decimal(p, s)
:numeric
的别名。
- 浮点数类型(Floating-Point Types)
real
:4 字节浮点数,符合 IEEE 754 标准。double precision
:8 字节浮点数,符合 IEEE 754 标准。
- 货币类型(Monetary Types)
money
:货币数值类型,具有区域性货币符号。
字符串类型(Character Types)
- 字符类型(Character Types)
char(n)
:定长字符类型,长度为 n。varchar(n)
:变长字符类型,最大长度为 n。text
:变长字符类型,没有长度限制。
二进制类型(Binary Types)
- 二进制数据类型(Binary Data Types)
bytea
:存储二进制数据的变长数组。
日期和时间类型(Date/Time Types)
- 日期和时间类型(Date/Time Types)
date
:日期类型(年月日)。time [ (p) ] [ without time zone ]
:时间类型(时分秒),可选的精度 p。time [ (p) ] with time zone
:包含时区的时间类型。timestamp [ (p) ] [ without time zone ]
:时间戳类型(年月日时分秒),可选的精度 p。timestamp [ (p) ] with time zone
:包含时区的时间戳类型。interval [ fields ] [ (p) ]
:时间间隔,fields 可以是 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND。
布尔类型(Boolean Type)
- 布尔类型(Boolean Type)
boolean
:布尔类型,取值为true
或false
。
枚举类型(Enumerated Types)
- 枚举类型(Enumerated Types)
enum
:用户定义的枚举类型。
几何类型(Geometric Types)
- 几何类型(Geometric Types)
point
:平面上的一个点,表示为 (x, y)。line
:无穷长的直线。lseg
:线段,表示为两个点 (x1, y1) 到 (x2, y2)。box
:矩形框,表示为两个对角点 (x1, y1), (x2, y2)。path
:有序的点集合,表示一条路径。polygon
:多边形,表示封闭的路径。circle
:圆,表示为中心点和半径。
网络地址类型(Network Address Types)
- 网络地址类型(Network Address Types)
cidr
:IPv4 或 IPv6 网络。inet
:IPv4 或 IPv6 地址。macaddr
:MAC 地址。
位串类型(Bit String Types)
- 位串类型(Bit String Types)
bit [ (n) ]
:定长位串,长度为 n。bit varying [ (n) ]
:变长位串,最大长度为 n。
文本搜索类型(Text Search Types)
- 文本搜索类型(Text Search Types)
tsvector
:文本搜索向量。tsquery
:文本搜索查询。
UUID 类型(UUID Type)
- UUID 类型(UUID Type)
uuid
:通用唯一标识符。
XML 类型(XML Type)
- XML 类型(XML Type)
xml
:用于存储 XML 数据。
JSON 类型(JSON Types)
- JSON 类型(JSON Types)
json
:存储 JSON 数据,作为文本。jsonb
:存储二进制格式的 JSON 数据,支持索引。
数组类型(Array Types)
- 数组类型(Array Types)
- 可以存储以上任意类型的数组。例如
integer[]
、text[]
。
- 可以存储以上任意类型的数组。例如
复合类型(Composite Types)
- 复合类型(Composite Types)
- 可以组合多个字段定义一个复合类型。
范围类型(Range Types)
- 范围类型(Range Types)
int4range
:整数范围。int8range
:大整数范围。numrange
:数值范围。tsrange
:不包含时区的时间戳范围。tstzrange
:包含时区的时间戳范围。daterange
:日期范围。
自定义类型(User-Defined Types)
- 自定义类型(User-Defined Types)
- 用户可以定义自己的数据类型,通过 PostgreSQL 的 CREATE TYPE 命令。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自Tony's Blog