PostgreSQL 数据类型
适用版本:9.4、9.5、9.6、10、11
数值类型
数字类型由2、4和8字节的整数、2字节和8字节浮点数以及可选精度小数组成。
名称 | 存储容量 | 描述 | 范围 |
---|---|---|---|
smallint | 2个字节 | 小范围整数 | -32768到+32767 |
integer | 4字节 | 整数的常用选择 | -2147483648至+2147483647 |
bigint | 8字节 | 大范围整数 | -9223372036854775808至+9223372036854775807 |
decimal | 可变长 | 用户指定的精度,准确 | 小数点前最多131072位; 小数点后最多16383位 |
numeric | 可变长 | 用户指定的精度,准确 | 小数点前最多131072位; 小数点后最多16383位 |
real | 4字节 | 可变精度,不精确 | 6位十进制数字精度 |
double precision | 8个字节 | 可变精度,不精确 | 15位十进制数字精度 |
smallserial | 2个字节 | 自动递增小范围整数 | 1到32767 |
serial | 4字节 | 自动递增整数 | 1至2147483647 |
bigserial | 8个字节 | 自动递增大范围整数 | 1至9223372036854775807 |
货币类型
money类型以固定的分数精度存储货币金额, 分数精度由数据库的lc_monetary设置决定。
名称 | 存储容量 | 描述 | 范围 |
---|---|---|---|
money | 8字节 | 货币金额 | -92233720368547758.08至+92233720368547758.07 |
由于此数据类型的输出是区域设置敏感的,因此可能无法将money数据加载到具有不同设置的数据库中lc_monetary。
为避免出现问题,在将转储还原到新数据库之前,请确保lc_monetary具有与转储的数据库中相同或等效的值。
字符类型
名称 | 描述 |
---|---|
character varying(n), varchar(n) | 变长, 有长度限制 |
character(n), char(n) | 定长,使用空白填充 |
text | 变长, 无限长度 |
二进制数据类型
名称 | 存储容量 | 描述 |
---|---|---|
bytea | 1或4个字节 加上实际的二进制字符串 | 变长,二进制字符串 |
日期/时间类型
名称 | 存储容量 | 描述 | 最低值 | 最高值 | 精度 |
---|---|---|---|---|---|
timestamp [ (p) ] [ without time zone ] | 8字节 | 日期和时间(没有时区) | 公元前4713年 | 公元294276 | 1微秒 |
timestamp [ (p) ] with time zone | 8字节 | 日期和时间,带时区 | 公元前4713年 | 公元294276 | 1微秒 |
date | 4字节 | 日期(没有时间) | 公元前4713年 | 公元5874897 年 | 1天 |
time [ (p) ] [ without time zone ] | 8字节 | 一天中的时间(没有日期) | 00:00:00 | 24:00:00 | 1微秒 |
time [ (p) ] with time zone | 12字节 | 时间(没有日期),带时区 | 00:00:00+1459 | 24:00:00-1459 | 1微秒 |
interval [ fields ] [ (p) ] | 16字节 | 时间间隔 | -1.78亿年 | 1.78亿年 | 1微秒 |
枚举类型
枚举(enum)类型是包含静态有序值集的数据类型。它们等同于许多编程语言支持的enum类型。枚举类型的示例可以是一周中的几天,也可以是一段数据的一组状态值。
使用CREATE TYPE
命令创建枚举类型, 示例:
CREATE TYPE mood AS ENUM (‘sad’, ‘ok’, ‘happy’);
枚举类型创建后即可像其它类型一样在表和函数定义中使用, 示例
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TABLE person (
name text,
current_mood mood
);
INSERT INTO person VALUES ('Moe', 'happy');
SELECT * FROM person WHERE current_mood = 'happy';
name | current_mood
------+--------------
Moe | happy
(1 row)
其它类型
除以上常用类型外,postgresql还具有大量的其它内置类型,你可以在postgresql官方文档中查看