八月 23, 2023
摘要:本教程向您介绍 PostgreSQL 的各种整数类型,包括SMALLINT
、INTEGER
、 和BIGINT
。
目录
PostgreSQL 整数类型简介
要在 PostgreSQL 中存储整数,您可以使用以下整数类型之一:SMALLINT
、INTEGER
和BIGINT
。
下表说明了每种整数类型的规范:
名称 | 存储大小 | 最小值 | 最大值 |
---|---|---|---|
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)
);
请注意,INT
是INTEGER
的同义词。
BIGINT
如果你想存储超出INTEGER
类型范围的整数,你可以使用BIGINT
类型。
BIGINT
类型需要 8 字节存储大小,可以存储 (-9,223,372,036,854,775,808, +9,223,372,036,854,775,807) 范围内的任何数字。
使用BIGINT
类型不仅会消耗大量存储空间,还会降低数据库的性能,因此,您应该要有充分的理由才使用它。
了解更多
PostgreSQL 教程:数据类型
PostgreSQL 文档:整数类型