MySQL & PostgreSQL 常用数据类型
MySQL & PostgreSQL
MySQL: 全球最受欢迎的开源数据库
PostgreSQL: 全球最先进的开源关系数据库
本文章所有资料均来自 MySQL 5.7 文档1与 PostgreSQL 10 文档2。
常用数据类型
数字类型
整数类型
数据类型 | MySQL | PostgreSQL |
---|---|---|
INT2 | SMALLINT 的别名 | SMALLINT 的别名 |
SMALLINT | 2 字节整数,SMALLINT(6) 的别名* | 2 字节整数 |
INT | 4 字节整数,INT(11) 的别名* | INTEGER 的别名 |
INT4 | INT 的别名 | INTEGER 的别名 |
INTEGER | INT 的别名 | 4 字节整数 |
BIGINT | 8 字节整数,BIGINT(20) 的别名* | 8 字节整数 |
INT8 | BIGINT 的别名 | BIGINT 的别名 |
*在MySQL中,SMALLINT、INT和BIGINT的参数为显示宽度。
字节数 | 范围 | 范围 |
---|---|---|
1 | (-27, 27-1) | (-128, 127) |
2 | (-215, 215-1) | (-32768, 32767) |
4 | (-231, 231-1) | (-2147483648, 2147483647) |
8 | (-263, 263-1) | (-9223372036854775808, 9223372036854775807) |
定点数类型(任意精度)
数据类型 | MySQL | PostgreSQL |
---|---|---|
DEC | DECIMAL 的别名 | NUMERIC 的别名 |
DEC(precision, scale = 0) | DECIMAL(precision, scale) 的别名 | NUMERICL(precision, scale) 的别名 |
DECIMAL | DECIMAL(10) 的别名 | NUMERIC 的别名 |
DECIMAL(precision, scale = 0) | 可选精度的精确数字,precision: (0, 65), scale: (0, 30) | NUMERICL(precision, scale) 的别名 |
NUMERIC | DECIMAL 的别名 | 精确数字 |
NUMERIC(precision, scale = 0) | DECIMAL(precision, scale) 的别名 | 可选精度的精确数字,precision: (0, 1000), scale: (0, 1000) |
(precision >= scale),其中 precision 为数字位数,scale 为小数位数。
浮点数类型
数据类型 | MySQL | PostgreSQL |
---|---|---|
FLOAT | 单精度浮点数 (4 字节) | DOUBLE PRECISION 的别名 |
FLOAT(precision) | FLOAT 的别名,precision: (0, 24) | REAL 的别名,precision: (1, 24) |
DOUBLE 的别名*,precision: (25, 53) | DOUBLE PRECISION 的别名,precision: (25, 53) | |
FLOAT4 | FLOAT 的别名 | REAL 的别名 |
REAL | DOUBLE 的别名* | 单精度浮点数 (4 字节) |
DOUBLE PRECISION | DOUBLE 的别名* | 双精度浮点数 (8 字节) |
FLOAT8 | DOUBLE 的别名* | DOUBLE PRECISION 的别名 |
precision 为以二进制位表示的最低可接受精度。
*在MySQL中,DOUBLE为双精度浮点数(8字节)。
序数类型
数据类型 | MySQL | PostgreSQL |
---|---|---|
SERIAL | BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE 的别名 | INTEGER NOT NULL DEFAULT nextval(' tablename_ colname_seq' ) 的别名* |
*在PostgreSQL中,会在创建表格之前创建名为tablename_colname_seq的序列生成器,创建表格之后将该序列与tablename表的colname列相关联。
布尔类型
数据类型 | MySQL | PostgreSQL |
---|---|---|
BOOL | TINYINT(1) 的别名* | BOOLEAN 的别名 |
BOOLEAN | TINYINT(1) 的别名* | 逻辑布尔值(真/假) |