MySQL 数据类型详解:数值、字符串与时间类型的选型实践
在数据库设计中,合理选择数据类型是保障存储效率与查询性能的基础。MySQL 提供了丰富的数据类型,涵盖数值、字符串、日期时间及枚举集合等类别。本文将深入解析各类特性的底层逻辑与使用场景。
一、数值类型
数值类型主要用于存储数字信息,包括整数和浮点数。
1.1 Tinyint 与 Unsigned
TINYINT 是最小的整数类型,占用 1 字节。默认有符号范围为 -128 至 127。若指定 UNSIGNED 属性,则范围变为 0 至 255。超出范围的值会被拦截。
CREATE TABLE test_tinyint (num TINYINT UNSIGNED);
INSERT INTO test_tinyint VALUES (255); -- 成功
INSERT INTO test_tinyint VALUES (256); -- 报错:Out of range
其他 INT 变体(如 SMALLINT, MEDIUMINT, BIGINT)遵循相同的位宽扩展逻辑,可根据业务数据量级选择。
1.2 Bit 类型
BIT(M) 用于存储二进制位数据,M 为位数,默认为 1。显示时可能以字符形式呈现(取决于客户端设置),例如插入 65 可能显示为 'A'。
CREATE TABLE test_bit (a BIT(8));
INSERT INTO test_bit VALUES (65); -- 显示可能为字符 A
二、小数类型
2.1 Float 类型
FLOAT 是单精度浮点数,存在精度损失风险。参数 (M, D) 分别表示总长度和小数位数,但 MySQL 对浮点数的校验相对宽松,会进行四舍五入处理。
CREATE TABLE test_float (salary FLOAT(4,2));
INSERT INTO test_float VALUES (99.999); -- 可能被四舍五入为 100.00
2.2 Decimal 类型
DECIMAL 是定点数类型,适合存储金额等需要精确计算的数据。其精度远高于 FLOAT,不会发生精度丢失。
CREATE TABLE test_decimal (price (,));
test_decimal ();


