ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Chapter 8\. 数据类型 **Table of Contents** + 8.1\. 数值类型 + 8.1.1\. 整数类型 + 8.1.2\. 任意精度数值 + 8.1.3\. 浮点数类型 + 8.1.4\. 序列号类型 + 8.2\. 货币类型 + 8.3\. 字符类型 + 8.4\. 二进制数据类型 + 8.4.1\. `bytea`十六进制格式 + 8.4.2\. `bytea`逃逸格式 + 8.5\. 日期/时间类型 + 8.5.1\. 日期/时间输入 + 8.5.2\. 日期/时间输出 + 8.5.3\. 时区 + 8.5.4\. 间隔输入 + 8.5.5\. 间隔输出 + 8.6\. 布尔类型 + 8.7\. 枚举类型 + 8.7.1\. 枚举类型的声明 + 8.7.2\. 排序 + 8.7.3\. 类型安全 + 8.7.4\. 实施细则 + 8.8\. 几何类型 + 8.8.1\. 点 + 8.8.2\. 线段 + 8.8.3\. 矩形 + 8.8.4\. 路径 + 8.8.5\. 多边形 + 8.8.6\. 圆 + 8.9\. 网络地址类型 + 8.9.1\. `inet` + 8.9.2\. `cidr` + 8.9.3\. `inet` 对比 `cidr` + 8.9.4\. `macaddr` + 8.10\. 位串类型 + 8.11\. 文本搜索类型 + 8.11.1\. `tsvector` + 8.11.2\. `tsquery` + 8.12\. UUID 类型 + 8.13\. XML 类型 + 8.13.1\. 创建XML值 + 8.13.2\. 编码处理 + 8.13.3\. 访问XML值 + 8.14\. JSON 类型 + 8.15\. Arrays + 8.15.1\. 数组类型的声明 + 8.15.2\. 数组值输入 + 8.15.3\. 访问数组 + 8.15.4\. 修改数组 + 8.15.5\. 在数组中检索 + 8.15.6\. 数组输入和输出语法 + 8.16\. 复合类型 + 8.16.1\. 声明复合类型 + 8.16.2\. 复合类型值输入 + 8.16.3\. 访问复合类型 + 8.16.4\. 修改复合类型 + 8.16.5\. 复合类型输入和输出语法 + 8.17\. 范围类型 + 8.17.1\. 内嵌范围类型 + 8.17.2\. 范例 + 8.17.3\. 包含及不包含边界 + 8.17.4\. 无限(无边界)范围 + 8.17.5\. 范围输入/输出 + 8.17.6\. 构造范围 + 8.17.7\. 离散范围类型 + 8.17.8\. 定义新的范围类型 + 8.17.9\. 索引 + 8.17.10\. 范围上的约束 + 8.18\. 对象标识符类型 + 8.19\. 伪类型 PostgreSQL有着丰富的内置数据类型可用。 用户还可以使用[CREATE TYPE](#calibre_link-100)命令增加新的数据类型。 [Table 8-1](#calibre_link-2267)显示了所有内置的普通数据类型。 在"别名"列里列出的大多数可选名字都是因历史原因PostgreSQL 在内部使用的名字。另外,还有一些内部使用的或者废弃的类型也可以使用, 但没有在这里列出。 **Table 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 所特有的,比如几何路径,要么是有几种不同的格式,比如日期和时间类型。 有些输入和输出函数是不可逆的。也就是说, 输出函数的输出结果和原始的输入比较的时候可能丢失精度。