PostgreSQL 整数类型
本文介绍了 PostgreSQL 中的三种整数数据类型:SMALLINT,INTEGER,和 BIGINT。
整数类型将内容存储为整数,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 |
注意,BIGINT 类型占用空间大,并且会降低数据库性能。
PostgreSQL 整数类型用法
要定义一个整数类型的列,请使用如下语法:
column_name {SMALLINT | INTEGER | BIGINT} column_constrait
注意, INT 是 INTEGER 的同义词,您可以使用 INT 代替 INTEGER。
要定义一个整数类型的主键列,请使用如下语法:
column_name {SMALLINT | INTEGER | BIGINT} GENERATED ALWAYS AS IDENTITY PRIMARY KEY
要定义一个整数类型的标识列,请使用如下语法:
column_name {SMALLINT | INTEGER | BIGINT} GENERATED ALWAYS AS IDENTITY
要定义一个 SERIAL 列, 请使用如下语法:
column_name SERIAL PRIMARY KEY
注意, SMALLSERIAL 的内部类型为 SMALLINT,SERIAL 的内部类型为 INTEGER,BIGSERIAL 的内部类型为 BIGINT。
PostgreSQL 整数类型实例
SMALLINT 类型实例
首先,使用下面的语句创建一个测试表:
CREATE TABLE test_smallint(
name TEXT NOT NULL,
age SMALLINT NOT NULL
);
使用下面的语句插入两行数据:
INSERT INTO test_smallint (name, age)
VALUES ('Tom', '23'), ('Lucy', 20)
RETURNING *;
name | age
------+-----
Tom | 23
Lucy | 20
(2 rows)注意, 虽然我们为整数列传入了一个字符类型的值 '23',PostgreSQL 自动将其转成了数字并存储到数据库。
使用 INTEGER 列作为主键
通常, INTEGER 数据类型的标识列可以作为主键列:
CREATE TABLE test_int_pk(
id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name TEXT NOT NULL,
age SMALLINT NOT NULL
);
这里,id 列是主键列。它的类型是 INTEGER,并且使用了 GENERATED ALWAYS AS IDENTITY 属性。
使用下面的语句插入和上面例子中相同的两条数据:
INSERT INTO test_int_pk (name, age)
VALUES ('Tom', '23'), ('Lucy', 20)
RETURNING *;
id | name | age
----+------+-----
1 | Tom | 23
2 | Lucy | 20
(2 rows)结论
PostgreSQL 提供了三种整数数据类型: SMALLINT,INTEGER,和 BIGINT。您可以根据自己不同的存储需求选择不同的类型以提高存取的效率。