MySQL 数据类型详解
在数据库设计阶段,合理选择数据类型是保障存储效率与查询性能的基础。MySQL 支持多种类型,涵盖数值、字符串、日期时间及枚举集合等。以下将结合实例逐一解析。
一、数值类型
数值类型主要用于存储数字信息,包括整数和浮点数。
1. tinyint 类型
tinyint 是最小的整型,默认占用 1 字节。其取值范围为 -128 至 127。若添加 unsigned 属性,则范围变为 0 至 255。
CREATE TABLE test_tinyint (
num TINYINT,
unsigned_num TINYINT UNSIGNED
);
测试表明,超出范围的插入操作会被 MySQL 拦截。对于状态标志(如 0/1)或极小范围计数,tinyint 是首选。
2. bit 类型
bit 用于存储位数据。参数 M 指定位数,默认值为 1。显示时按 ASCII 码对应值呈现,直接查询可能无法直观看到数值。
CREATE TABLE test_bit (
a BIT(8)
);
插入 65 会显示为字符 'A',因为 65 对应大写字母的 ASCII 码。超出位宽表示的最大值同样会被拦截。
3. float 类型
float 为单精度浮点数,需指定总长度 M 和小数位数 d。例如 FLOAT(4,2) 表示最大值为 99.99。
注意: float 存在精度损失问题。当插入数据超过有效精度时,MySQL 会进行四舍五入处理,但底层存储仍可能有误差。
CREATE TABLE test_float (
salary FLOAT(4,2)
);
若需精确计算(如金额),应避免使用 float。
4. decimal 类型
decimal 提供定点数存储,精度远高于 float。适用于对精度要求严格的场景。
CREATE TABLE test_decimal (
price DECIMAL(10,2)
);
对比实验显示,相同数据下 float 可能出现尾数偏差,而 decimal 能保持完全一致。decimal 整数部分最大位数 m 为 65,小数部分 d 默认为 0,最大 30。
二、字符串类型
字符串类型分为定长与变长两种,直接影响存储空间。
1. char 类型
char 为固定长度字符串。定义时指定的 L 即为实际占用的字符空间,不足部分用空格填充。
CREATE TABLE test_char (
name CHAR(2)
);


