datatype.md 8.1 KB
Newer Older
李少辉-开发者's avatar
李少辉-开发者 已提交
1 2 3 4
## 第 8 章数据类型

**目录**

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
5
[8.1.数值类型](datatype-numeric.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
6

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
7
[8.1.1.整数类型](datatype-numeric.html#DATATYPE-INT)
李少辉-开发者's avatar
李少辉-开发者 已提交
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

[8.1.2.任意精度数](datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL)

[8.1.3.浮点类型](datatype-numeric.html#DATATYPE-FLOAT)

[8.1.4.串行类型](datatype-numeric.html#DATATYPE-SERIAL)

[8.2.货币类型](datatype-money.html)

[8.3.字符类型](datatype-character.html)

[8.4.二进制数据类型](datatype-binary.html)

[8.4.1.`拜茶`十六进制格式](datatype-binary.html#id-1.5.7.12.9)

[8.4.2.`拜茶`转义格式](datatype-binary.html#id-1.5.7.12.10)

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
25
[8.5.日期/时间类型](datatype-datetime.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
26

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
27
[8.5.1.日期/时间输入](datatype-datetime.html#DATATYPE-DATETIME-INPUT)
李少辉-开发者's avatar
李少辉-开发者 已提交
28 29 30 31 32 33 34

[8.5.2.日期/时间输出](datatype-datetime.html#DATATYPE-DATETIME-OUTPUT)

[8.5.3.时区](datatype-datetime.html#DATATYPE-TIMEZONES)

[8.5.4.间隔输入](datatype-datetime.html#DATATYPE-INTERVAL-INPUT)

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
35
[8.5.5.间隔输出](datatype-datetime.html#DATATYPE-INTERVAL-OUTPUT)
李少辉-开发者's avatar
李少辉-开发者 已提交
36 37 38 39 40

[8.6.布尔类型](datatype-boolean.html)

[8.7.枚举类型](datatype-enum.html)

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
41
[8.7.1.枚举类型声明](datatype-enum.html#id-1.5.7.15.5)
李少辉-开发者's avatar
李少辉-开发者 已提交
42 43 44 45 46 47 48 49 50

[8.7.2.订购](datatype-enum.html#id-1.5.7.15.6)

[8.7.3.类型安全](datatype-enum.html#id-1.5.7.15.7)

[8.7.4.实施细节](datatype-enum.html#id-1.5.7.15.8)

[8.8.几何类型](datatype-geometric.html)

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
51
[8.8.1.积分](datatype-geometric.html#id-1.5.7.16.5)
李少辉-开发者's avatar
李少辉-开发者 已提交
52 53 54 55 56 57 58

[8.8.2.线条](datatype-geometric.html#DATATYPE-LINE)

[8.8.3.线段](datatype-geometric.html#DATATYPE-LSEG)

[8.8.4.盒子](datatype-geometric.html#id-1.5.7.16.8)

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
59
[8.8.5.路径](datatype-geometric.html#id-1.5.7.16.9)
李少辉-开发者's avatar
李少辉-开发者 已提交
60

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
61
[8.8.6.多边形](datatype-geometric.html#DATATYPE-POLYGON)
李少辉-开发者's avatar
李少辉-开发者 已提交
62

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
63
[8.8.7.界](datatype-geometric.html#DATATYPE-CIRCLE)
李少辉-开发者's avatar
李少辉-开发者 已提交
64

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
65
[8.9.网络地址类型](datatype-net-types.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
66

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
67
[8.9.1.`网络`](datatype-net-types.html#DATATYPE-INET)
李少辉-开发者's avatar
李少辉-开发者 已提交
68 69 70 71 72

[8.9.2.`苹果酒`](datatype-net-types.html#DATATYPE-CIDR)

[8.9.3.`网络`对比`苹果酒`](datatype-net-types.html#DATATYPE-INET-VS-CIDR)

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
73
[8.9.4.`macaddr`](datatype-net-types.html#DATATYPE-MACADDR)
李少辉-开发者's avatar
李少辉-开发者 已提交
74

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
75
[8.9.5.`macaddr8`](datatype-net-types.html#DATATYPE-MACADDR8)
李少辉-开发者's avatar
李少辉-开发者 已提交
76

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
77
[8.10.位串类型](datatype-bit.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
78

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
79
[8.11.文本搜索类型](datatype-textsearch.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
80

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
81
[8.11.1.`向量`](datatype-textsearch.html#DATATYPE-TSVECTOR)
李少辉-开发者's avatar
李少辉-开发者 已提交
82

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
83
[8.11.2.`查询`](datatype-textsearch.html#DATATYPE-TSQUERY)
李少辉-开发者's avatar
李少辉-开发者 已提交
84

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
85
[8.12.UUID 类型](datatype-uuid.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
86

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
87
[8.13.XML 类型](datatype-xml.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
88

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
89
[8.13.1.创建 XML 值](datatype-xml.html#id-1.5.7.21.6)
李少辉-开发者's avatar
李少辉-开发者 已提交
90 91 92 93 94

[8.13.2.编码处理](datatype-xml.html#id-1.5.7.21.7)

[8.13.3.访问 XML 值](datatype-xml.html#id-1.5.7.21.8)

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
95
[8.14.JSON 类型](datatype-json.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
96

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
97
[8.14.1.JSON 输入和输出语法](datatype-json.html#JSON-KEYS-ELEMENTS)
李少辉-开发者's avatar
李少辉-开发者 已提交
98

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
99
[8.14.2.设计 JSON 文档](datatype-json.html#JSON-DOC-DESIGN)
李少辉-开发者's avatar
李少辉-开发者 已提交
100

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
101
[8.14.3.`jsonb`收容与存在](datatype-json.html#JSON-CONTAINMENT)
李少辉-开发者's avatar
李少辉-开发者 已提交
102

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
103
[8.14.4.`jsonb`索引](datatype-json.html#JSON-INDEXING)
李少辉-开发者's avatar
李少辉-开发者 已提交
104

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
105
[8.14.5.`jsonb`下标](datatype-json.html#JSONB-SUBSCRIPTING)
李少辉-开发者's avatar
李少辉-开发者 已提交
106

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
107
[8.14.6.变换](datatype-json.html#id-1.5.7.22.20)
李少辉-开发者's avatar
李少辉-开发者 已提交
108

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
109
[8.14.7.jsonpath 类型](datatype-json.html#DATATYPE-JSONPATH)
李少辉-开发者's avatar
李少辉-开发者 已提交
110

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
111
[8.15.数组](arrays.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
112

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
113
[8.15.1.数组类型声明](arrays.html#ARRAYS-DECLARATION)
李少辉-开发者's avatar
李少辉-开发者 已提交
114

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
115
[8.15.2.数组值输入](arrays.html#ARRAYS-INPUT)
李少辉-开发者's avatar
李少辉-开发者 已提交
116

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
117
[8.15.3.访问数组](arrays.html#ARRAYS-ACCESSING)
李少辉-开发者's avatar
李少辉-开发者 已提交
118

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
119
[8.15.4.修改数组](arrays.html#ARRAYS-MODIFYING)
李少辉-开发者's avatar
李少辉-开发者 已提交
120

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
121
[8.15.5.在数组中搜索](arrays.html#ARRAYS-SEARCHING)
李少辉-开发者's avatar
李少辉-开发者 已提交
122

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
123
[8.15.6.数组输入和输出语法](arrays.html#ARRAYS-IO)
李少辉-开发者's avatar
李少辉-开发者 已提交
124

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
125
[8.16.复合类型](rowtypes.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
126

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
127
[8.16.1.复合类型声明](rowtypes.html#ROWTYPES-DECLARING)
李少辉-开发者's avatar
李少辉-开发者 已提交
128

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
129
[8.16.2.构建复合值](rowtypes.html#id-1.5.7.24.6)
李少辉-开发者's avatar
李少辉-开发者 已提交
130

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
131
[8.16.3.访问复合类型](rowtypes.html#ROWTYPES-ACCESSING)
李少辉-开发者's avatar
李少辉-开发者 已提交
132

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
133
[8.16.4.修改复合类型](rowtypes.html#id-1.5.7.24.8)
李少辉-开发者's avatar
李少辉-开发者 已提交
134

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
135
[8.16.5.在查询中使用复合类型](rowtypes.html#ROWTYPES-USAGE)
李少辉-开发者's avatar
李少辉-开发者 已提交
136

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
137
[8.16.6.复合类型输入和输出语法](rowtypes.html#ROWTYPES-IO-SYNTAX)
李少辉-开发者's avatar
李少辉-开发者 已提交
138

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
139
[8.17.范围类型](rangetypes.html)
李少辉-开发者's avatar
李少辉-开发者 已提交
140

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
141
[8.17.1.内置范围和多范围类型](rangetypes.html#RANGETYPES-BUILTIN)
李少辉-开发者's avatar
李少辉-开发者 已提交
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174

[8.17.2. 例子](rangetypes.html#RANGETYPES-EXAMPLES)

[8.17.3. 包容与排斥界限](rangetypes.html#RANGETYPES-INCLUSIVITY)

[8.17.4. 无限(无界)范围](rangetypes.html#RANGETYPES-INFINITE)

[8.17.5. 量程输入/输出](rangetypes.html#RANGETYPES-IO)

[8.17.6. 构造范围和多范围](rangetypes.html#RANGETYPES-CONSTRUCT)

[8.17.7. 离散范围类型](rangetypes.html#RANGETYPES-DISCRETE)

[8.17.8. 定义新的范围类型](rangetypes.html#RANGETYPES-DEFINING)

[8.17.9. 索引](rangetypes.html#RANGETYPES-INDEXING)

[8.17.10. 对射程的限制](rangetypes.html#RANGETYPES-CONSTRAINT)

[8.18. 域类型](domains.html)

[8.19. 对象标识符类型](datatype-oid.html)

[8.20.`pg_lsn`类型](datatype-pg-lsn.html)

[8.21. 伪类型](datatype-pseudo.html)

[](<>)[](<>)

PostgreSQL有一组丰富的本机数据类型可供用户使用。用户可以使用[创建类型](sql-createtype.html)命令

[表8.1](datatype.html#DATATYPE-TABLE)显示所有内置的通用数据类型。“别名”列中列出的大多数备选名称都是PostgreSQL出于历史原因在内部使用的名称。此外,还有一些内部使用的或不推荐使用的类型,但此处未列出。

李少辉-开发者's avatar
build  
李少辉-开发者 已提交
175
**表8.1.数据类型**
李少辉-开发者's avatar
李少辉-开发者 已提交
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227

| 名称 | 化名 | 描述 |
| --- | --- | --- |
| `比基特` | `int8` | 有符号八字节整数 |
| `大系列` | `连载8` | 自动递增八字节整数 |
| `位[(*`n`*) ]` |  | 定长位串 |
| `位变化[(*`n`*) ]` | `瓦比特[(*`n`*) ]` | 可变长度位串 |
| `布尔值` | `布尔` | 逻辑布尔值(真/假) |
| `盒` |  | 平面上的长方体 |
| `二进制数据` |  | 二进制数据(“字节数组”) |
| `字符[(*`n`*) ]` | `字符[(*`n`*) ]` | 定长字符串 |
| `字符变化[(*`n`*) ]` | `varchar[(*`n`*) ]` | 可变长度字符串 |
| `苹果酒` |  | IPv4或IPv6网络地址 |
| `圆圈` |  | 在飞机上盘旋 |
| `日期` |  | 日历日期(年、月、日) |
| `双精度` | `浮动8` | 双精度浮点数(8字节) |
| `内特` |  | IPv4或IPv6主机地址 |
| `整数` | `智力`, `int4` | 有符号四字节整数 |
| `间隔[*`领域`* ] [ (*`p`*) ]` |  | 时间跨度 |
| `json` |  | 文本JSON数据 |
| `jsonb` |  | 二进制JSON数据,已分解 |
| `线` |  | 平面上的无限直线 |
| `lseg` |  | 平面上的线段 |
| `马卡德尔` |  | MAC(媒体访问控制)地址 |
| `macaddr8` |  | MAC(媒体访问控制)地址(EUI-64格式) |
| `钱` |  | 货币金额 |
| `数字[(*`p`*, *`s`*) ]` | `十进制[(*`p`*, *`s`*) ]` | 可选择精度的精确数字 |
| `路径` |  | 平面上的几何路径 |
| `pg_lsn` |  | PostgreSQL日志序列号 |
| `pg_快照` |  | 用户级事务ID快照 |
| `指向` |  | 平面上的几何点 |
| `多边形` |  | 平面上的闭合几何路径 |
| `真实的` | `浮动4` | 单精度浮点数(4字节) |
| `短整型` | `int2` | 有符号双字节整数 |
| `smallserial` | `连载2` | 自动递增两字节整数 |
| `电视连续剧` | `连载4` | 自动递增四字节整数 |
| `文本` |  | 可变长度字符串 |
| `时间[(*`p`*)[无时区]` |  | 一天中的时间(无时区) |
| `时间[(*`p`*)]时区` | `蒂梅茨` | 一天中的时间,包括时区 |
| `时间戳[(*`p`*)[无时区]` |  | 日期和时间(无时区) |
| `时间戳[(*`p`*)]时区` | `时间戳` | 日期和时间,包括时区 |
| `tsquery` |  | 文本搜索查询 |
| `tsvector` |  | 文本搜索文档 |
| `txid_快照` |  | 用户级事务ID快照(已弃用;请参阅`pg_快照`) |
| `乌伊德` |  | 通用唯一标识符 |
| `xml` |  | XML数据 |

### 兼容性

SQL指定了以下类型(或其拼写):`比基特`, `一点`, `位变`, `布尔值`, `烧焦`, `性格多变`, `性格`, `瓦尔查尔`, `日期`, `双精度`, `整数`, `间隔`, `数字的`, `十进制的`, `真实的`, `短整型`, `时间`(有无时区),`时间戳`(有无时区),`xml`.

每个数据类型都有一个由其输入和输出函数确定的外部表示。许多内置类型都有明显的外部格式。然而,有几种类型要么是PostgreSQL独有的,比如几何路径,要么有几种可能的格式,比如日期和时间类型。一些输入和输出函数是不可逆的,即,与原始输入相比,输出函数的结果可能会失去准确性。