MySQL 数据类型详解:数值、字符串与时间类型实战
在数据库设计中,列的数据类型决定了数据的存储方式、范围以及查询效率。选择合适的类型是构建高性能数据库的基础。MySQL 提供了丰富的数据类型,主要包括数值、小数、字符串、日期时间和枚举集合等。下面我们将逐一拆解这些类型的特性与使用场景。
一、数值类型
MySQL 中的整型家族包括 tinyint、smallint、mediumint、int 和 bigint。它们的主要区别在于存储空间和取值范围。以 tinyint 为例,它占用 1 个字节。
1.1 tinyint 类型
默认情况下,signed tinyint 的范围是 -128 到 127。我们可以通过创建表来验证这一点。
CREATE TABLE test_tinyint (num TINYINT);
INSERT INTO test_tinyint VALUES (-128), (127);
SELECT * FROM test_tinyint;
如果插入超出范围的数值,MySQL 会报错拦截。例如尝试插入 128 或 -129。
此外,tinyint 支持 unsigned 属性,表示无符号整数。加上 unsigned 后,范围变为 0 到 255。
CREATE TABLE test_unsigned (num TINYINT UNSIGNED);
INSERT INTO test_unsigned VALUES (255);
其他 int 类型(smallint, mediumint, int, bigint)遵循同样的 signed/unsigned 规则,只是位数不同。
1.2 bit 类型
bit 类型用于存储二进制数据。M 代表比特位的位数,默认为 1。
CREATE TABLE test_bit (a BIT(8));
INSERT INTO test_bit VALUES (10);
SELECT * FROM test_bit;
这里有个细节:bit 字段在查询时通常显示为 ASCII 码对应的字符,而不是十进制数值。例如插入 65 可能会显示为 'A'。如果需要查看原始数值,可以使用 CAST 函数转换。
二、小数类型
处理金额或高精度数据时,浮点数和定点数是关键选择。
2.1 float 类型
float 是浮点数类型,定义参数 M(总长度)和 D(小数位数)。例如 FLOAT(4,2) 表示总共 4 位,其中 2 位小数,范围约为 -99.99 到 99.99。
CREATE TABLE test_float (salary FLOAT(4,2));
INSERT INTO test_float ();


