PostgreSQL 支持的所有数据类型,并对每种数据类型进行详细介绍。

数值类型(Numeric Types)

  1. 整数类型(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
  2. 精确小数类型(Exact Numeric Types)
    • numeric(p, s):可变精度的数值,p 表示精度,s 表示小数位数。
    • decimal(p, s)numeric 的别名。
  3. 浮点数类型(Floating-Point Types)
    • real:4 字节浮点数,符合 IEEE 754 标准。
    • double precision:8 字节浮点数,符合 IEEE 754 标准。
  4. 货币类型(Monetary Types)
    • money:货币数值类型,具有区域性货币符号。

字符串类型(Character Types)

  1. 字符类型(Character Types)
    • char(n):定长字符类型,长度为 n。
    • varchar(n):变长字符类型,最大长度为 n。
    • text:变长字符类型,没有长度限制。

二进制类型(Binary Types)

  1. 二进制数据类型(Binary Data Types)
    • bytea:存储二进制数据的变长数组。

日期和时间类型(Date/Time Types)

  1. 日期和时间类型(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)

  1. 布尔类型(Boolean Type)
    • boolean:布尔类型,取值为 truefalse

枚举类型(Enumerated Types)

  1. 枚举类型(Enumerated Types)
    • enum:用户定义的枚举类型。

几何类型(Geometric Types)

  1. 几何类型(Geometric Types)
    • point:平面上的一个点,表示为 (x, y)。
    • line:无穷长的直线。
    • lseg:线段,表示为两个点 (x1, y1) 到 (x2, y2)。
    • box:矩形框,表示为两个对角点 (x1, y1), (x2, y2)。
    • path:有序的点集合,表示一条路径。
    • polygon:多边形,表示封闭的路径。
    • circle:圆,表示为中心点和半径。

网络地址类型(Network Address Types)

  1. 网络地址类型(Network Address Types)
    • cidr:IPv4 或 IPv6 网络。
    • inet:IPv4 或 IPv6 地址。
    • macaddr:MAC 地址。

位串类型(Bit String Types)

  1. 位串类型(Bit String Types)
    • bit [ (n) ]:定长位串,长度为 n。
    • bit varying [ (n) ]:变长位串,最大长度为 n。

文本搜索类型(Text Search Types)

  1. 文本搜索类型(Text Search Types)
    • tsvector:文本搜索向量。
    • tsquery:文本搜索查询。

UUID 类型(UUID Type)

  1. UUID 类型(UUID Type)
    • uuid:通用唯一标识符。

XML 类型(XML Type)

  1. XML 类型(XML Type)
    • xml:用于存储 XML 数据。

JSON 类型(JSON Types)

  1. JSON 类型(JSON Types)
    • json:存储 JSON 数据,作为文本。
    • jsonb:存储二进制格式的 JSON 数据,支持索引。

数组类型(Array Types)

  1. 数组类型(Array Types)
    • 可以存储以上任意类型的数组。例如 integer[]text[]

复合类型(Composite Types)

  1. 复合类型(Composite Types)
    • 可以组合多个字段定义一个复合类型。

范围类型(Range Types)

  1. 范围类型(Range Types)
    • int4range:整数范围。
    • int8range:大整数范围。
    • numrange:数值范围。
    • tsrange:不包含时区的时间戳范围。
    • tstzrange:包含时区的时间戳范围。
    • daterange:日期范围。

自定义类型(User-Defined Types)

  1. 自定义类型(User-Defined Types)
    • 用户可以定义自己的数据类型,通过 PostgreSQL 的 CREATE TYPE 命令。