04_PostgreSQL 数据类型

目录

    • PostgreSQL 数据类型
      • 数值类型
      • 货币类型
      • 字符类型
      • 二进制数据类型
      • 日期/时间类型
      • 枚举类型
      • 其它类型

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官方文档中查看

你可能感兴趣的:(SQL学习)