1、数值类型
- 整数类型
MySQL 支持的整数类型有 SQL 标准中的整数类型 INTEGER,SMALLINT,TINYINT、MEDIUMINT和BIGINT。其整数类型的特性如下表所示:
在上述INT类型中,又有三个可选属性,分别是:
- (M):M 指定了 INT 型数据显示的宽度。
- UNSIGNED:UNSIGNED(无符号)修饰符规定字段的值只能保存正数。
- ZEROFILL:ZEROFILL(零填充)修饰符规定可以用 0(不是空格)来填补输出的值。使用这个修饰符可以阻止 MySQL 数据库存储负值。
- 浮点数类型和定点数类型
浮点数类型包括单精度(FLOAT)和双精度(DOUBLE)两种,定点数类型只包括DEC/DECIMAL/NUMERIC 一种,DEC/DECIMAL 与 NUMERIC 表示的是同一种数据类型。
浮点数类型所占空间大小及表数范围如下表所示:
在浮点数数中有一个默认值参数(M,D),“(M,D)”中的 M 表示浮点数据类型中数字的总个数,D 表示小数点后数字的个数。
注意:
(1) M 的取值范围为 0~255。但由于 FLOAT 只能保证 6 位有效数字的准确性,所以在FLOAT(M,D)中,当 M<=6 时,数字通常是准确的;而 DOUBLE 只能保证 16 位有效数字的准确性,所以在 DOUBLE(M,D)中,当 M<=16 时,数字也通常是准确的。
(2) D 的取值范围为 0~30,同时必须满足 D<=M,否则会报错。
(3)浮点数类型(M,D)的用法为非标准用法,如果需要数据库迁移,则不要这么使用。
定点数的类型特性如下所示:
(1) DECIMAL 类型的 M 默认值为 10,D 默认值为 0。如果在创建表时,定义某字段为DECIMAL 类型而没有带任何参数,则等同于 DECIMAL(10,0),如果只带一个参数,则该参数为 M 值,D 则取默认值 0。
(2) M 的取值范围为 1~65,取 0 时会被设为默认值 10,超出范围则会报错。
(3) D 的取值范围为 0~30,同时必须满足 D<=M,否则会报错。