提要: 本教程将向您介绍PostgreSQL各种整数类型,包括SMALLINT,INTEGER和BIGINT。

简介

可以使用以下几种整型来存储一个整数:SMALLINTINTEGERBIGINT

类型类型 存储大小 最小值 最大值
SMALLINT 2字节 -32,768 32,767
INTEGERINT 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

和 MySQL 不同,PostgreSQL 没有无符号整数。

SMALLINT

SMALLINT 需要2字节的存储空间,取值范围从 -32,768 到 32,767。可以用它来存储诸如某人的年龄、某书的总页数等。如下例:

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

INTEGER

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

INTEGER 需要4字节的存储空间,取值范围从 -2,147,483,648 到 2,147,483,647。可以用它来存储挺大的整数,比如某个城市的总人口:

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

INTINTEGER 的代名词。

BIGINT

当需要存储一个超出 INT 取值范围的数时,需要使用 BIGINT。它需要8字节的存储空间,取值范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

除非你有足够的理由,否则请别使用 BIGINT