
在数据库设计中,列的数据类型选择直接影响存储空间、查询性能及数据准确性。MySQL 提供了丰富的数据类型分类,理解它们的底层机制和适用场景是构建高性能应用的基础。
一、数值类型
数值类型主要用于存储整数或小数。其中整型家族最为常用,以 tinyint 为例,其有符号范围是 -128 至 127。
CREATE TABLE test_tinyint (
num TINYINT
);
插入边界值测试:
INSERT INTO test_tinyint VALUES (-128), (127);
若尝试插入超出范围的数值(如 128),MySQL 会直接拦截并报错。此外,整型支持 UNSIGNED 属性,表示无符号,此时 tinyint 的范围变为 0 至 255。
1.1 Bit 类型
BIT 类型用于存储位字段。定义时指定位数 M,默认值为 1。显示时,MySQL 可能会按 ASCII 码转换显示,导致插入数字后看起来像字符。
CREATE TABLE test_bit (
a BIT(8)
);
插入 65 可能显示为 'A',这是正常的显示机制。若插入超出位宽最大值的数,同样会被拦截。
1.2 Float 与 Decimal
浮点数类型 FLOAT 和定点数类型 DECIMAL 都涉及精度问题。
CREATE TABLE test_decimal (
f FLOAT(4,2),
d DECIMAL(4,2)
);
FLOAT 存在精度损失,例如插入 1.234 可能存储为 1.23。而 DECIMAL 能精确存储,适合金融等对精度要求高的场景。FLOAT 有效精度约为 7 位,超过则出现误差;DECIMAL 整数部分最大 65 位,小数部分最大 30 位。
二、字符串类型
字符串类型分为定长和变长两种。
2.1 Char 类型
CHAR 是定长字符串。定义长度 L 后,无论实际内容多短,底层都会分配固定空间。单位是字符而非字节。
CREATE TABLE test_char (
name CHAR(2)
);


