提要:本教程将带你学习 PostgreSQL 的数据类型,包括: 布尔、字符串、数字、temporal、数组、JSON、UUID和特殊类型。

PostgreSQL 数据类型概述

PostgreSQL 支持以下数据类型:

布尔型 boolean

布尔数据类型可以是 truefalsenull 中的一个。使用 booleanbool 关键来定义布尔类型的字段。

当插入数据的时候,PostgreSQL 会对值进行转换:1yesyt 转换成 true0nonf 转成 false

字符 character

PostgreSQL 提供3种字符类型:CHAR(n)VARCHAR(n)TEXT

  • CHAR(n) 是定长的、使用空格填充的字符。如果插入的数据比字段定义的长度更小,PostgreSQL 会使用空格将其填充。如果插入的数据比字段定义的长度更大,PostgreSQL 会抛出错误。
  • VARCHAR(n) 是变长的字符。使用 VARCHAR(n),最多可以存储 n 个字符。如果插入的数据比字段定义的长度更小,PostgreSQL 不会使用空格填充。
  • TEXT 是变长字符。理论上,它能存储无限长度的字符。

数字 numeric

PostgreSQL 提供了两种不同类型的数字:

整数 integer

在 PostgreSQL 中,有三种整数:

  • SMLLINT:2字节有符号整数,取值范围从 -32768 到 32767。
  • INT:4字节有符号整数。取值范围从 -214783648 到 214783647。
  • SERIAL:和 INT 类似。不同之处在于,PostgreSQL 会自动生成值,并把值填充到 SERIAL 字段中。它和 MySQL 的 AUTO_INCREMENT 及 SQLite 的 AUTOINCREMENT 相似。

浮点数

以下是三种主要的浮点数:

  • FLOAT(n):是一个浮点数,其精度至少为 n,最大为8个字节。
  • REALfloat8:双精度(8字节)浮点数
  • NUMERICNUMERIC(p,s)p数字后面带着 s 个小数的实数。NUMERIC(p,s) 是确切的数字。

暂存类型 temporal

temporal 用来存储日期和/或时间。PostgreSQL 有5个主要的 temporal 类型:

  • DATE:存储日期
  • TIME:存储时间
  • TIMESTAMP:存储日期和时间
  • TIMESTAMPZ:存储 TIMESTAMP 和时区
  • INTERVAL:存储一段时间

TIMESTAMPZ 是 PostgreSQL 对标准 SQL 的扩展。

数组 array

在 PostgreSQL 中,可以在字段中存储字符串数组、整型数组等。数组在以下场景中非常实用:存储一周的时间、存储一年月份等。

JSON

PostgreSQL 提供了两种数据类型来存储 JSON 数据: JSONJSONB

JSON 数据类型存储原始的 JSON 数据,每次处理都需要重新解析。JSONB 数据类型以二进制形式存储 JSON 数据,所以它处理起来非常快,但插入的时候会更慢。同时,JSONB 支持索引。

UUID

UUID 数据类型用于存储 RFC 4122 定义的通用唯一标识符。它比 SERIAL 更能保证唯一性,并且可以隐藏一些敏感信息。

特殊类型

  • box:矩形
  • line:线
  • point:点
  • lseg:线段
  • polygon:多边形
  • inet:IPv4 地址
  • macaddr:MAC 地址
上一篇:PostgreSQL的DELETE
下一篇:PostgreSQL 创建表