章 8. 数据类型
- 目录
- 8.1. 数字类型
- 8.2. 货币类型
- 8.3. 字符类型
- 8.4. 二进制数据类型
-
- 8.4.1. bytea的十六进制格式
- 8.4.2. bytea的逃逸格式
- 8.5. 日期/时间类型
- 8.6. 布尔类型
- 8.7. 枚举类型
- 8.8. 几何类型
- 8.9. 网络地址类型
-
- 8.9.1. inet
- 8.9.2. cidr
- 8.9.3. inet vs. cidr
- 8.9.4. macaddr
- 8.10. 位串类型
- 8.11. 文本搜索类型
- 8.12. UUID类型
- 8.13. XML类型
- 8.14. JSON 类型
-
- 8.14.1. JSON 输入和输出语法
- 8.14.2. 有效地设计 JSON 文档
- 8.14.3. jsonb 包含和存在
- 8.14.4. jsonb 索引
- 8.15. 数组
- 8.16. 组合类型
-
- 8.16.1. 组合类型的声明
- 8.16.2. 组合值输入
- 8.16.3. 访问组合类型
- 8.16.4. 修改组合类型
- 8.16.5. 组合类型输入和输出语法
- 8.17. 范围类型
- 8.18. 对象标识符类型
- 8.19. pg_lsn Type
- 8.20. 伪类型
PostgreSQL有着丰富的本地数据类型可用。用户可以使用CREATE TYPE命令为 PostgreSQL增加新的数据类型。
表 8-1显示了所有内建的普通数据类型。大部分在"别名"列里列出的可选名字都是因历史原因 被PostgreSQL在内部使用的名字。另外,还有一些内部使用的或者废弃的类型也可以用,但没有在这里列出。
表 8-1. 数据类型
名字 | 别名 | 描述 |
---|---|---|
bigint | int8 | 有符号的8字节整数 |
bigserial | serial8 | 自动增长的8字节整数 |
bit [ (n) ] | 定长位串 | |
bit varying [ (n) ] | varbit | 变长位串 |
boolean | bool | 逻辑布尔值(真/假) |
box | 平面上的普通方框 | |
bytea | 二进制数据("字节数组") | |
character [ (n) ] | char [ (n) ] | 定长字符串 |
character varying [ (n) ] | varchar [ (n) ] | 变长字符串 |
cidr | IPv4或IPv6网络地址 | |
circle | 平面上的圆 | |
date | 日历日期(年、月、日) | |
double precision | float8 | 双精度浮点数(8字节) |
inet | IPv4或IPv6主机地址 | |
integer | int, int4 | 有符号4字节整数 |
interval [ fields ] [ (p) ] | 时间段 | |
json | 文本 JSON 数据 | |
jsonb | 二进制 JSON 数据,已分解 | |
line | 平面上的无限长的线 | |
lseg | 平面上的线段 | |
macaddr | MAC(Media Access Control)地址 | |
money | 货币数量 | |
numeric [ (p, s) ] | decimal [ (p, s) ] | 可选择精度的精确数字 |
path | 平面上的几何路径 | |
pg_lsn | PostgreSQL日志序列号 | |
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数据 |
兼容性: 下列类型(或者及其拼写)是SQL指定的:bigint、bit、bit varying、boolean、char、character varying、character、varchar、date、double precision、integer、interval、numeric、decimal、real、smallint、time(有时区或无时区)、timestamp(有时区或无时区)、xml。
每种数据类型都有一个由其输入和输出函数决定的外部表现形式。许多内建的类型有明显的格式。不过,许多类型要么是PostgreSQL所特有的(例如几何路径),要么可能是有几种不同的格式(例如日期和时间类型)。 有些输入和输出函数是不可逆的,即输出函数的结果和原始输入比较时可能丢失精度。