ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 数值类型 | 名字 | 存储尺寸 | 描述 | 范围 | | --- | --- | --- | --- | | `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 | > 常用的类型是integer,因为它提供了在范围、存储空间和性能之间的最佳平衡 > numeric 用来存储具有高精度要求的数字类型的数据,比如金额、里程、销量等。 > numeric 比 其他几个满,如果对精度没有要求,应该是用浮点数 `smallserial`、`serial`和`bigserial`类型不是真正的类型,类似其它一些数据库中支持的`AUTO_INCREMENT`属性 ``` CREATE TABLE tablename ( colname SERIAL ) ``` 等价于 ``` CREATE SEQUENCE tablename_colname_seq AS integer; CREATE TABLE tablename ( colname integer NOT NULL DEFAULT nextval('tablename_colname_seq') ); ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname; ```