类型介绍
布尔类型、数值类型、字符类型、二进制数据类型、位串类型、日期和时间类型、枚举类型、几何类型、网络地址类型、数组类型、复合类型、xml类型、json类型、range类型、对象标识符类型、伪类型、其他类型。
布尔类型
boolean类型的状态true,false。如果是 unknown 未知状态,用NUll表示。
布尔类型的操作符:知识链接
数值类型
数值类型列表 | |||
---|---|---|---|
类型名称 | 存储空间 | 描述 | 范围 |
smallint | 2字节 | 小范围整数 | -215~215-1 |
int或integer | 4字节 | 最常用的整数 | -231~231-1 |
bigint | 8字节 | 大范围的函数 | -263~263-1 |
numeric或decimal | 变长 | 用户声明的指定的精度,精确 | 无限制 |
real | 4字节 | 变精度,不精确 | 6位十进制数字精度 |
double precision | 8字节 | 变精度,不精确 | 15位十进制数字精度 |
serial | 4字节 | 自增整数 | 1~2的31次方-1 |
bigserial | 8字节 | 大范围的自增函数 | 1~2的63次方-1 |
整数类型
分为三种:smallint、int、bigint。
数据库建表及mybatis逆向生成model时,int和integer和int4是等效的、smallint和int2是等效的、bigint和int8是等效的。
int8逆向生成后是javaType会是java.lang.Long、int4是Integer、int2是Short。
精确的小数类型
分为:numeric、numeric(m,n)、numeric(m)。
适用于货币金额和其他要求精确计算的场合,不过在算术运算上要比整数类型和浮点数类型慢很多。
语法:NUMERIC (precision, scale)
其中,精度precision必须为正数,标度scale可以为零或正数。
枚举类型
与MySQL中不同,在PostgreSQL中要使用枚举类型需要先使用CREATETYPE创建一个枚举类型。见下面的例子。
先建一个“week” 的枚举类型,
CREATE TYPE week AS ENUM
('Sun', 'Mon', 'Tues','Wed', 'Thur', 'Fri', 'Sat');
然后在建表的时候给字段加上字段类型 week:
CREATE TABLE duty (person text, weekday week) ;
在psql中可以使用“\dT” 命令查看枚举类型的定义:
\dT + week
枚举类型说明
- 在枚举类型中,值的顺序是创建枚举类型时定义的顺序。
比如上面中建的 week ,最小值是Sun,最大值是Sat。 - 每个枚举类型都是独立的,不能与其他枚举类型混用。
- 一个枚举值在磁盘上占4字节。
- 枚举类型的值是大小写敏感的