04_PostgreSQL 数据类型

本文介绍了PostgreSQL数据库中的各种数据类型,包括数值类型、货币类型、字符类型、二进制数据类型、日期/时间类型、枚举类型以及其他特殊类型。特别提到了货币类型的区域设置敏感性问题,以及如何创建和使用枚举类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PostgreSQL 数据类型

适用版本:9.4、9.5、9.6、10、11

数值类型

数字类型由2、4和8字节的整数、2字节和8字节浮点数以及可选精度小数组成。

名称存储容量描述范围
smallint2个字节小范围整数-32768到+32767
integer4字节整数的常用选择-2147483648至+2147483647
bigint8字节大范围整数-9223372036854775808至+9223372036854775807
decimal可变长用户指定的精度,准确小数点前最多131072位; 小数点后最多16383位
numeric可变长用户指定的精度,准确小数点前最多131072位; 小数点后最多16383位
real4字节可变精度,不精确6位十进制数字精度
double precision8个字节可变精度,不精确15位十进制数字精度
smallserial2个字节自动递增小范围整数1到32767
serial4字节自动递增整数1至2147483647
bigserial8个字节自动递增大范围整数1至9223372036854775807

货币类型

money类型以固定的分数精度存储货币金额, 分数精度由数据库的lc_monetary设置决定。

名称存储容量描述范围
money8字节货币金额-92233720368547758.08至+92233720368547758.07

由于此数据类型的输出是区域设置敏感的,因此可能无法将money数据加载到具有不同设置的数据库中lc_monetary。

为避免出现问题,在将转储还原到新数据库之前,请确保lc_monetary具有与转储的数据库中相同或等效的值。

字符类型

名称描述
character varying(n), varchar(n)变长, 有长度限制
character(n), char(n)定长,使用空白填充
text变长, 无限长度

二进制数据类型

名称存储容量描述
bytea1或4个字节 加上实际的二进制字符串变长,二进制字符串

日期/时间类型

名称存储容量描述最低值最高值精度
timestamp [ (p) ] [ without time zone ]8字节日期和时间(没有时区)公元前4713年公元2942761微秒
timestamp [ (p) ] with time zone8字节日期和时间,带时区公元前4713年公元2942761微秒
date4字节日期(没有时间)公元前4713年公元5874897 年1天
time [ (p) ] [ without time zone ]8字节一天中的时间(没有日期)00:00:0024:00:001微秒
time [ (p) ] with time zone12字节时间(没有日期),带时区00:00:00+145924:00:00-14591微秒
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官方文档中查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值