PostgreSQL 数据类型

数据类型指定要在表字段中存储的数据类型。创建表时,对于每一列,您必须使用一种数据类型。它标识特定类型的数据,如整数、布尔值、浮点数等。

在本节中,我们将讨论 PostgreSQL 中使用的各种数据类型。

PostgreSQL中,每个数据库表都有很多列,并且每一列都有精确的数据类型。它支持广泛的数据类型。

此外,用户可以使用 CREATE TYPE SQL命令创建他们的自定义数据类型。并且这些数据类型具有以下优点:

  • 性能:如果我们正确有效地使用这些数据类型来存储数据值,它会提高我们的性能。
  • 验证:数据类型的正确使用涉及数据验证和排除数据类型范围之外的数据。
  • 紧凑性:它存储高效,因为列可以存储单一类型的值。
  • 一致性:相同数据类型的列相互矛盾的活动提供可靠的结果,通常是最快的。

在 PostgreSQL 中,我们有很多数据类型;让我们一一了解它们: 

  • Numeric 数据类型
  • Character 数据类型
  • Date/time数据类型
  • Monetary数据类型
  • Binary数据类型
  • Boolean 数据类型
  • Enumerated 数据类型
  • Geometric 数据类型
  • Text 数据类型
  • UUID 数据类型
  • 网络地址类型
  • JSON数据类型
  • 位串类型
  • XML 数据类型
  • Range 数据类型
  • 数组
  • 复合数据类型
  • 对象标识符类型
  • 伪数据类型
  • pg-Isn 数据类型

Numeric数据类型

数值数据类型用于指定表格中的数值数据。它包含以下内容:

  • 四字节和八字节浮点数
  • 二、四和八字节整数
  • 可选精度小数。

下表包含 PostgreSQL 支持的所有数字数据类型:

名称 描述 存储大小 范围
smallint 存储整数,小范围。 2个字节 -32768 至 +32767
integer 存储整数。当你想存储典型的整数时使用它。 4字节 -2147483648 至 +2147483647
bigint 存储整数,范围大。 8字节 -9223372036854775808 至 9223372036854775807
decimal 用户指定的精度,exact 多变的 小数点前最多131072位;小数点后最多 16383 位。
numeric 用户指定的精度,exact 多变的
小数点前最多131072位;小数点后最多 16383 位。
real
可变精度,不精确
4字节 6 位小数精度。
double precision 可变精度,不精确 8字节 15位小数精度
serial 自增整数 4字节 1至2147483647
bigserial 大型自动递增整数 8字节 1 至 9223372036854775807

Character数据类型

在 PostgreSQL 中,我们有各种通用的字符数据类型,这些数据类型用于表示字符类型值。

下表包含 PostgreSQL 支持的所有字符数据类型:

数据类型 解释
char(size)
这里的大小是要存储的字符数。固定长度的字符串。右边的空格填充为相等大小的字符。
character(size) 这里的大小是要存储的字符数。固定长度的字符串。右边的空格填充为相等大小的字符。
varchar(size) 这里的大小是要存储的字符数。变长字符串。
character varying(size) 这里的大小是要存储的字符数。变长字符串。
text 变长字符串。

Date/Time数据类型

PostgreSQL 支持完整的 SQL日期和时间数据类型集。日期/时间数据类型用于表示使用日期和时间值的列。根据公历,计算日期。

下表包含 PostgreSQL 支持的所有日期/时间数据类型:

名称 描述 存储空间 最小值 最大值 解析度
timestamp [ (p) ] [ 没有时区 ] 日期和时间(无时区) 8字节 公元前 4713 年 294276 广告 1微秒/14位
带时区的timestamp [ (p) ] 日期和时间,带时区 8字节 公元前 4713 年 294276 广告 1微秒/14位
date 日期(没有时间) 4字节 公元前 4713 年 5874897 广告 1天
time [ (p) ] [ 没有时区 ] 一天中的时间(无日期) 8字节 00:00:00 24:00:00 1微秒/14位
带时区的time  [ (p) ] 仅一天中的时间,带时区 12字节 00:00:00+1459 24:00:00-1459 1微秒/14位
interval  [ 字段 ] [ (p) ] 时间间隔 12字节 -178000000 年 17800万年 1微秒/14位

货币类型:

名称 描述 存储空间 范围
money 货币金额 8字节 -92233720368547758.08 至 +92233720368547758.07

二进制数据类型

bytea数据类型允许存储二进制字符串,如下表所示:

名称 存储空间 描述
bytea 1 或 4 个字节加上实际的二进制字符串 变长二进制字符串

布尔型

PostgreSQL 包含标准的 SQL 类型boolean;布尔类型有许多状态,例如true、false和第三种状态unknown,由 SQL 空值表示。

名称 描述 存储空间
boolean 它指定真或假的状态。 1字节

枚举类型

在 PostgreSQL 中,枚举数据类型包括一组静态的、有序的值。

它类似于与各种编程语言兼容的枚举类型。枚举数据类型在带有外键的表中表示,以确保数据完整性。

例如:

CREATE TYPE fruits_name AS ENUM  
('Mango','Apple','Orange','Strawberry')  

几何数据类型

几何数据类型表示二维空间对象。最基本的类型,即点,构成了所有其他类型的基础。

名称 存储空间 表示 描述
point 16字节 点在平面上 (x,y)
line 32字节 无限线(未完全实现) ((x1,y1),(x2,y2))
lseg 32字节 有限线段 ((x1,y1),(x2,y2))
box 32字节 长方形盒子 ((x1,y1),(x2,y2))
path 16+16n字节 闭合路径(类似于多边形) ((x1,y1),...)
path 16+16n字节 打开路径 [(x1,y1),...]
polygon 40+16n 多边形(类似于闭合路径) ((x1,y1),...)
circle 24字节 圆圈 <(x,y),r>(中心点和半径)

热门文章

优秀文章