注:红色的为常用类型
数字类型
名字 | 存储尺寸 | 描述 | 范围 |
---|---|---|---|
smallint | 2字节 | 小范围整数 | -32768 to +32767 |
integer | 4字节 | 整数的典型选择 | -2147483648 to +2147483647 |
bigint | 8字节 | 大范围整数 | -9223372036854775808 to +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 |
1.常用的类型是integer,因为它提供了在范围、存储空间和性能之间的最佳平衡。一般只有在磁盘空间紧张/范围不够的时候才考虑使用 smallint/bigint类型。
2.类型decimal和numeric是等效的。两种类型都是sql标准的一部分。
NUMERIC(precision@H_404_129@,scale)
一个numeric的比例scale是到小数部分的位数,numeric的精度precision是整个数字里全部位的数目。
3.数据类型real和double precision是不准确的、变精度的数字类型。
字符类型
名字 | 描述 |
---|---|
character varying(n),varchar(n) | 有限制的变长 |
character(n),char(n) | 定长,空格填充 |
text | 无限变长 |
1. 在Postgresql里。character(n)通常是这三种类型之中最慢的一个,因为它需要额外的存储开销。在大多数情况下,应该使用text或者character varying。
2. 字符类型允许存储的最长字串大概是 1 GB。 (允许在数据类型声明中出现的的 n 的最大值比这还小)
3. 如果你想存储没有特定上限的长字串,那么使用 text 或者没有长度声明词的 character varying