PostgreSQL – 数据类型
在本文中,我们将研究 PostgreSQL 中可用的各种数据类型。 PostgreSQL 支持以下数据类型:
- 布尔值
- 字符类型[例如 char、varchar 和 text]
- 数字类型[例如整数和浮点数]
- 时间类型[例如日期、时间、时间戳和间隔]
- UUID [用于存储 UUID(通用唯一标识符)]
- Array [用于存储数组字符串、数字等]
- JSON [存储 JSON 数据]
- hstore [ 存储键值对]
- 特殊类型[如网络地址和几何数据]
现在让我们大致了解一下上述数据类型。
布尔值:
在 PostgreSQL 中,“bool”或“boolean”关键字用于初始化布尔数据类型。这些数据类型可以包含true、false和null值。布尔数据类型根据以下内容存储在数据库中:
- 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 个字节。
- float8或real用于表示 4 字节浮点数。
- 实数 N(d,p) 表示后面有 d 位数字和 p 位小数点,是numeric或numeric(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地址。