PostgreSQL 教程: integer 整数类型

八月 23, 2023

摘要:本教程向您介绍 PostgreSQL 的各种整数类型,包括SMALLINTINTEGER、 和BIGINT

PostgreSQL 整数类型简介

postgresql integer

要在 PostgreSQL 中存储整数,您可以使用以下整数类型之一:SMALLINTINTEGERBIGINT

下表说明了每种整数类型的规范:

名称 存储大小 最小值 最大值
SMALLINT 2 字节 -32,768 +32,767
INTEGER 4 字节 -2,147,483,648 +2,147,483,647
BIGINT 8 字节 -9,223,372,036,854,775,808 +9,223,372,036,854,775,807

如果您尝试存储超出允许范围的值,PostgreSQL 将发出错误。

与 MySQL 整数不同,PostgreSQL 不提供无符号整数类型。

SMALLINT

SMALLINT需要 2 个字节的存储大小,可以存储 (-32,767, 32,767) 范围内的任何整数。

您可以使用SMALLINT类型来存储诸如人的年龄、书籍的页数等内容。

以下语句创建一个表,名为books

CREATE TABLE books (
    book_id SERIAL PRIMARY KEY,
    title VARCHAR (255) NOT NULL,
    pages SMALLINT NOT NULL CHECK (pages > 0)
);

在这个例子中,pages列是一个SMALLINT列。由于一本书的页数必须为正,因此我们添加了一个CHECK约束来强制执行此规则。

INTEGER

INTEGER是整数类型中最常见的选择,因为它提供了存储大小、范围和性能之间的最佳平衡。

INTEGER类型需要 4 字节存储大小,可以存储 (-2,147,483,648, 2,147,483,647) 范围内的数字。

您可以将INTEGER类型用于存储相当大的整数(例如城市甚至国家的人口)的列,如下例所示:

CREATE TABLE cities (
    city_id serial PRIMARY KEY,
    city_name VARCHAR (255) NOT NULL,
    population INT NOT NULL CHECK (population >= 0)
);

请注意,INTINTEGER的同义词。

BIGINT

如果你想存储超出INTEGER类型范围的整数,你可以使用BIGINT类型。

BIGINT类型需要 8 字节存储大小,可以存储 (-9,223,372,036,854,775,808, +9,223,372,036,854,775,807) 范围内的任何数字。

使用BIGINT类型不仅会消耗大量存储空间,还会降低数据库的性能,因此,您应该要有充分的理由才使用它。