数值数据类型
整数类型
除特别说明外,MySQL兼容性MySQL模式中的数据类型精度、标度、位数大小等默认不支持用浮点型数值定义,建议使用合法的整型数值定义。
- 输入格式:
- 操作符:
- 负数显示类型转换:
MySQL:依据其对应的二进制将最高位替换成数值位计算结果,例如(-1)::uint4 = 4294967295。
- 其他差异:
- 聚集函数:
- variance:GaussDB表示样本方差,MySQL表示总体方差。
- stddev:GaussDB表示样本标准差,MySQL表示总体标准差。
- 显示宽度:
- 在为整型数字列指明宽度信息时,如果不同时指定ZEROFILL,则宽度信息在表结构描述中不显示。
- INSERT语句插入字符类型字段,GaussDB统一补齐0后插入。
- JOIN USING语句,涉及类型推导,MySQL默认第一张表列,GaussDB若结果为有符号类型则宽度信息失效,否则为第一张表字段宽度。
- greatest/least、ifnull/if、case when/decode,MySQL不补齐0,GaussDB在类型及宽度信息一致时补齐0。
- 作为函数/存储过程出入参、返回值时,MySQL支持功能、GaussDB语法不报错功能不支持。
GaussDB数据库和MySQL数据库整数类型具体差异请参见表1。
MySQL数据库 |
GaussDB数据库 |
差异 |
---|---|---|
BOOL |
支持,存在差异 |
MySQL:BOOL/BOOLEAN类型实际映射为TINYINT类型。 GaussDB:支持BOOL,其中:
使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。 |
BOOLEAN |
支持,存在差异 |
|
TINYINT[(M)] [UNSIGNED] |
支持,存在差异 |
详情请参见整数类型公共差异说明。 |
SMALLINT[(M)] [UNSIGNED] |
支持,存在差异 |
详情请参见整数类型公共差异说明。 |
MEDIUMINT[(M)] [UNSIGNED] |
支持,存在差异 |
MySQL存储MEDIUMINT数据需要3字节。
GaussDB映射为INT类型,存储需要4字节。
其他差异请参见整数类型公共差异说明。 |
INT[(M)] [UNSIGNED] |
支持,存在差异 |
详情请参见整数类型公共差异说明。 |
INTEGER[(M)] [UNSIGNED] |
支持,存在差异 |
详情请参见整数类型公共差异说明。 |
BIGINT[(M)] [UNSIGNED] |
支持,存在差异 |
详情请参见整数类型公共差异说明。 |
任意精度类型
MySQL数据库 |
GaussDB数据库 |
差异 |
---|---|---|
DECIMAL[(M[,D])] |
支持,存在差异 |
|
NUMERIC[(M[,D])] |
支持,存在差异 |
|
DEC[(M[,D])] |
支持,存在差异 |
|
FIXED[(M[,D])] |
不支持 |
- |
浮点类型
MySQL数据库 |
GaussDB数据库 |
差异 |
---|---|---|
FLOAT[(M,D)] |
支持,存在差异 |
|
FLOAT(p) |
支持,存在差异 |
|
DOUBLE[(M,D)] |
支持,存在差异 |
|
DOUBLE PRECISION[(M,D)] |
支持,存在差异 |
|
REAL[(M,D)] |
支持,存在差异 |
|
序列整数
MySQL数据库 |
GaussDB数据库 |
差异 |
---|---|---|
SERIAL |
支持,存在差异 |
GaussDB中SERIAL具体介绍请参见《开发指南》手册中的“SQL参考 > 数据类型 > 数值类型”章节。
规格上与MySQL的差异如下:
CREATE TABLE test(f1 serial, f2 CHAR(20));
|