📜  PostgreSQL – 数据类型

📅  最后修改于: 2022-05-13 01:57:15.413000             🧑  作者: Mango

PostgreSQL – 数据类型

在本文中,我们将研究 PostgreSQL 中可用的各种数据类型。 PostgreSQL 支持以下数据类型:

  • 布尔值
  • 字符类型[例如 char、varchar 和 text]
  • 数字类型[例如整数和浮点数]
  • 时间类型[例如日期、时间、时间戳和间隔]
  • UUID [用于存储 UUID(通用唯一标识符)]
  • Array [用于存储数组字符串、数字等]
  • JSON [存储 JSON 数据]
  • hstore [ 存储键值对]
  • 特殊类型[如网络地址和几何数据]

现在让我们大致了解一下上述数据类型。

布尔值:

在 PostgreSQL 中,“bool”或“boolean”关键字用于初始化布尔数据类型。这些数据类型可以包含true、falsenull值。布尔数据类型根据以下内容存储在数据库中:

  • 1、yes, y, t, true 值转换为true
  • 0, no, false, f 值转换为 false

当查询这些布尔数据类型时,将根据以下内容进行转换和返回:

  • t 为真
  • f 为假
  • 空的空间

字符:

PostgreSQL 有三种字符数据类型,即CHAR(n)VARCHAR(n)TEXT



  • CHAR(n)用于数据(字符串) 具有填充空格的固定长度字符。如果字符串的长度小于“n”的值,则自动填充剩余的空格。类似地,对于长度大于“n”值的字符串,PostgreSQL 会抛出错误。
  • VARCHAR(n)是可变长度的字符串。类似为CHAR(n)时,它可以存储“N”长度数据。但与 CHAR(n) 不同的是,如果数据长度小于“n”的值,则不会进行填充。
  • TEXT是可变长度的字符串。它可以存储无限长度的数据。

数字:

PostgreSQL 有两种类型的数字,即整数和浮点数。

1.整数:

  • 小整数(SMALLINT) 的范围是 -32, 768 到 32, 767,大小为 2 字节。
  • 整数(INT) 的范围为 -2、147、483、648 到 2、147、483、647,大小为 4 字节。
  • 赛瑞亚升(SERIAL)的工作原理相似,除了这些整数被在由PostgreSQL的列自动生成的。

2. 浮点数:

  • float(n)用于精度为 n 的浮点数,最多为 8 个字节。
  • float8real用于表示 4 字节浮点数。
  • 实数 N(d,p) 表示后面有 d 位数字和 p 位小数点,是numericnumeric(d, p) 的一部分。这些通常非常精确。

时间数据类型:

此数据类型用于存储日期时间数据。 PostgreSQL 有 5 种时间数据类型:

  • DATE 仅用于存储日期。
  • TIME 用于存储一天中的时间值。
  • TIMESTAMP 用于存储日期和时间值。
  • TIMESTAMPTZ 用于存储时区感知时间戳数据类型。
  • INTERVAL 用于存储时间段。

数组:

在 PostgreSQL 中,数组列可用于存储字符串数组或整数数组等。在存储数据时,例如存储几个月、一年甚至一周等的天数,它会很方便。

JSON:

PostgreSQL 支持 2 种 JSON 类型,即 JSON 和 JSONB(二进制 JSON)。 JSON 数据类型用于存储每次被查询调用时解析的纯 JSON 数据。而 JSONB 数据类型用于以二进制格式存储 JSON 数据。它一方面使查询数据更快,另一方面减慢了数据插入过程,因为它支持表数据的索引。

UUID:

UUID 数据类型允许您存储由 RFC 4122 定义的通用唯一标识符。 UUID 值保证比 SERIAL 更好的唯一性,并可用于隐藏公开的敏感数据,例如 URL 中的 id 值。

UUID 代表唯一通用标识符。这些用于为整个数据库中唯一的数据提供唯一 ID。 UUID 数据类型用于存储 RFC 4122 定义的数据的 UUID。这些通常用于保护敏感数据,如信用卡信息,在唯一性的上下文中与 SERIAL 数据类型相比更好。

特殊数据类型:

除了原始数据类型,PostgreSQL 还支持一些与网络或几何相关的特殊数据类型。下面列出了这些特殊数据类型:

  • box:用于存放长方形的盒子。
  • 点:用于存储几何对数。
  • lseg:用于存储线段。
  • 点:用于存储几何对数。
  • 多边形:用于存储封闭的几何图形。
  • inet:用于存储IP4地址。
  • macaddr:用于存储MAC地址。