PostgreSQL有着丰富的内置数据类型可用。 用户还可以使用CREATE TYPE命令增加新的数据类型。
表 8-1显示了所有内置的泛用数据类型。 在"别名"列里列出的大多数可选名字都是因历史原因在PostgreSQL 内部使用。另外,还有一些内部使用的或者废弃的类型也是可用的, 但没有在这里列出。
表 8-1. 数据类型
| 名字 | 别名 | 描述 |
|---|---|---|
| bigint | int8 | 有符号8字节整数 |
| bigserial | serial8 | 自增8字节整数 |
| bit [ (n) ] | 定长位串 | |
| bit varying [ (n) ] | varbit | 可变长位串 |
| boolean | bool | 逻辑布尔值(真/假) |
| box | 平面上的矩形 | |
| bytea | 二进制数据("字节数组") | |
| character varying [ (n) ] | varchar [ (n) ] | 可变长字符串 |
| character [ (n) ] | char [ (n) ] | 定长字符串 |
| cidr | IPv4 或 IPv6 网络地址 | |
| circle | 平面上的圆 | |
| date | 日历日期(年, 月, 日) | |
| double precision | float8 | 双精度浮点数(8字节) |
| inet | IPv4 或 IPv6 主机地址 | |
| integer | int, int4 | 有符号 4 字节整数 |
| interval [ fields ] [ (p) ] | 时间间隔 | |
| line | 平面上的无限长直线 | |
| lseg | 平面上的线段 | |
| macaddr | MAC (Media Access Control)地址 | |
| money | 货币金额 | |
| numeric [ (p, s) ] | decimal [ (p, s) ] | 可选精度的准确数值数据类型 |
| path | 平面上的几何路径 | |
| point | 平面上的点 | |
| polygon | 平面上的封闭几何路径 | |
| real | float4 | 单精度浮点数(4 字节) |
| smallint | int2 | 有符号 2 字节整数 |
| smallserial | serial2 | 自增 2 字节整数 |
| serial | serial4 | 自增 4 字节整数 |
| text | 可变长字符串 | |
| time [ (p) ] [ without time zone ] | 一天中的时刻(无时区) | |
| time [ (p) ] with time zone | timetz | 一天中的时刻,含时区 |
| timestamp [ (p) ] [ without time zone ] | 日期与时刻(无时区) | |
| timestamp [ (p) ] with time zone | timestamptz | 日期与时刻,含时区 |
| tsquery | 文本检索查询 | |
| tsvector | 文本检索文档 | |
| txid_snapshot | 用户级别的事务ID快照 | |
| uuid | 通用唯一标识符 | |
| xml | XML 数据 | |
| json | JSON 数据 |
兼容性: 下列类型(或那样的拼写)是SQL规范声明的: bigint, bit, bit varying, boolean, char, character varying, character, varchar, date, double precision, integer, interval, numeric, decimal, real, smallint, time (有时区或无时区), timestamp (有时区或无时区), xml。
每种数据类型都有一个由其输入和输出函数决定的外部表现形式。 许多内置的类型有明显的外部格式。不过,一些数据类型要么是PostgreSQL 所特有的,比如几何路径,要么是有若干种不同的格式,比如日期和时刻类型。 有些输入和输出函数是不可逆的,也就是说, 输出函数的输出结果和原始的输入比较的时候可能丢失精度。