十月 20, 2024
摘要:在本教程中,您将了解 PostgreSQL 数据类型,包括布尔型、字符型、数字型、时间型、数组、json、uuid 和特殊类型。

目录
PostgreSQL 数据类型概述
PostgreSQL 支持以下数据类型:
- 布尔型
- 字符类型,例如
char、varchar和text。 - 数字类型,例如整数和浮点数。
- 时间类型,例如日期、时间、时间戳和时间间隔。
- 用于存储通用唯一标识符的 UUID。
- 数组,用于存储数组字符串、数字等。
- JSON 和 JSONB 存储 JSON 数据
- hstore 存储键值对
- 特殊类型,例如网络地址和几何数据。
布尔型
布尔数据类型可以包含三个可能值之一:true、false 或 null。您可以使用boolean或bool关键字来声明具有布尔数据类型的列。
当您将数据插入布尔列时,PostgreSQL 将其转换为布尔值
1、yes、y、t、true值转换为true。0、no、false、f值转换为false。
当您从布尔列中查询数据时,PostgreSQL 会将值转换回来,例如 t转换为true、f转换为false、和space转换为null。
字符型
PostgreSQL 提供了三种字符数据类型:CHAR(n)、VARCHAR(n)和TEXT
CHAR(n)是用空格填充的固定长度字符。如果插入的字符串短于列的长度,PostgreSQL 会填充空格。如果插入的字符串比列的长度长,PostgreSQL 将发出错误。VARCHAR(n)是变长字符串。使用VARCHAR(n),您最多可以存储n字符。当存储的字符串短于列的长度时,PostgreSQL 不会填充空格。TEXT是变长字符串。理论上,text 数据可以是无限长度的字符串。
数值型
PostgreSQL 提供两种不同类型的数字:
- 整数
- 浮点数
整数
PostgreSQL 中有三种整数:
- 小整数 (
SMALLINT) 是 2 字节有符号整数,范围为 -32,768 到 32,767。 - 整数 (
INT) 是一个 4 字节整数,范围为 -2,147,483,648 到 2,147,483,647。 - 序列数 (serial) 与整数相同,只是 PostgreSQL 会自动生成值并将值填充到
SERIAL列中。这类似于 MySQL 中的AUTO_INCREMENT列或 SQLite 中的AUTOINCREMENT列。
浮点数
浮点数主要有以下三种类型:
float(n)是一种浮点数,其精度至少为 n,最大为 8 个字节。real或float8是一个 4 字节浮点数。numeric或numeric(p,s)是 p 位的实数,小数点后有 s 个数字。numeric(p,s)是精确的数字。
时间类型
时间数据类型允许您存储日期和/或时间数据。PostgreSQL 有五种主要的时间数据类型:
DATE仅存储日期。TIME存储一天中的时间值。TIMESTAMP存储日期和时间值。TIMESTAMPTZ是一种时区感知的时间戳数据类型。它是带有时区的时间戳 (timestamp with time zone) 的缩写。INTERVAL存储时间间隔。
TIMESTAMPTZ是 PostgreSQL 对 SQL 标准的时间数据类型的扩展。
数组
在 PostgreSQL 中,您可以在数组列中存储字符串数组、整数数组等。该数组在某些情况下会派上用场,例如存储一周中的几天、一年中的几个月。
JSON
PostgreSQL 提供了两种 JSON 数据类型:JSON和JSONB用于存储 JSON 数据。
JSON数据类型存储纯 JSON 数据,每次处理都需要重新解析,而JSONB数据类型以二进制格式存储JSON数据,处理速度更快,但插入速度较慢。此外,JSONB支持索引,这也是一个优势。
UUID
UUID数据类型允许您存储 RFC 4122 定义的通用唯一标识符。这些UUID值保证了比SERIAL更好的唯一性,并且可用于隐藏向公众公开的敏感数据,例如 URL 中的id值。
特殊数据类型
除了原始数据类型之外,PostgreSQL 还提供了几种与几何和网络相关的特殊数据类型。
box– 一个长方形的方框。line– 一组点。point– 一对几何数字。lseg– 一条线段。polygon– 闭合几何。inet– IPv4 地址。macaddr– MAC 地址。
在本教程中,我们向您介绍了 PostgreSQL 数据类型,以便您可以在下一个教程中使用它们来创建表。