一、常用数据类型
1、数值类型
(1)整型类型
- TINYINT
- 占用1字节
- 对应关键字为TINYINT、INT1
- SMALLINT
- 占用2字节
- 对应关键字为SMALLINT、INT2
- INTEGER
- 占用4字节
- 对应关键字为INTEGER、INT4、BINARY_INTEGER
- BIGINT
- 占用8字节
- 对应关键字BIGINT、INT8
(2)单精度浮点类型
- REAL/FLOAT4
- 占用4字节
(3)双精度浮点类型
- FLOAT8/DOUBLE PRECISION/BINARY_DOUBLE
(4)序列整型
- SMALLSERIAL
- 2字节序列整型
- SERIAL
- 4字节序列整型
- BIGSERIAL
- 8字节序列整型
(5)任意精度型
- NUMERIC[(p[,s])],DECIMAL[(p[,s])]
- 精度p取值范围为[1,1000],标度s取值范围为[0,p]
- p为总位数,s为小数位数
- 用户声明精度,每四位(十进制)占用两个字节,然后在整个数据上加上八个字节的额外开销
- NUMBER[(p[,s])]
- NUMERIC类型的别名
2、字符类型
(1)定长字符串类型
- CHAR(n) CHARACTER(n) NCHAR(n)
- 定长字符串,不足补空格
- n是指字节长度,如不带精度n,默认精度为1
- 最大为10MB
(2)变长字符串类型
- CLOB/TEXT
- 存储文本大对象
- 最大为1GB - 8203字节(即1073733621字节)
- VARCHAR(n)
- 用于存储变长字符串,最大为10MB
- 对应关键字为VARCHAR/VARCHAR2/NVARCHAR2/CHARACTER VARYING
3、日期类型
- DATE
- 日期和时间
- 4字节(实际存储空间大小为8字节)
- TIME[§] [WITHOUT TIME ZONE]
- 只用于一日内时间
- p表示小数点后的精度,取值范围为0~6
- 8字节
- TIME[§] [WITH TIME ZONE]
- 只用于一日内时间,带时区
- p表示小数点后的精度,取值范围为0~6
- 12字节
- TIMESTAMP[§] [WITHOUT TIME ZONE]
- 日期和时间
- p表示小数点后的精度,取值范围为0~6
- 8字节
- TIMESTAMP[§] [WITH TIME ZONE]
- 日期和时间,带时区。TIMESTAMP的别名为TIMESTAMPTZ
- p表示小数点后的精度,取值范围为0~6
- 8字节
- SMALLDATETIME
- 日期和时间,不带时区
- 精确到分钟,秒位大于等于30秒进一位
- 8字节
- INTERVAL DAY(I) TO SECOND§
- 时间间隔,X天X小时X分X秒
- I:天数的精度,取值范围为0~6。为适配Oracle语法,未实现具体功能
- p:秒数的精度,取值范围为0~6。小数末尾的零不显示
- 16字节
- INTERVAL[FIELDS][§]
- 时间间隔
- fields:可以是YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, DAY TO HOUR, DAY TO SECOND, HOUR TO MINUTE, HOUR TO SECOND, MINUTE TO SECOND
- p:秒数的精度,取值范围为0~6,且fields为SECOND, DAY TO SECOND, HOUR TO SECOND或MINUTE TO SECOND时,参数p才有效。小数末尾的零不显示
- 12字节
- reltime
- 相对时间间隔。格式为:X year Xmons X days XX:XX:XX
- 采用儒略历计时,规定一年为365.25天,一个月为30天,计算输入值对应的相对时间间隔,输出采用POSTGRES格式
- 4字节
4、二进制类型
- BLOB
- 二进制大对象(列存储不支持BLOB类型)
- 最大为1GB - 8203字节(即1073733621字节)
- RAW
- 变长的十六进制类型(列存储不支持RAW类型)
- 4字节加上实际的十六进制字符串。最大为1GB - 8203字节(即1073733621字节)
- BYTEA
- 变长的二进制字符串
- 4字节加上实际的二进制字符串。最大为1GB - 8203字节(即1073733621字节)
二、其他数据类型
- 布尔类型
- 货币类型
- 几何类型
- UUID类型
- JSON类型
- 网络地址类型