MySQL 支持多种数据类型,主要用于定义表中字段的种类。这些数据类型大致可以分为三大类:数值类型、字符串(字符)类型和日期时间类型。合理选择数据类型有助于提升数据库性能、节省存储空间并保证数据完整性。
数值类型
用于存储数字数据,支持整数和浮点数。
TINYINT:非常小的整数,占用1字节,有符号范围是 -128 到 127,无符号是 0 到 255。适合状态标记等小范围值。 SMALLINT:小整数,占用2字节,有符号范围为 -32,768 到 32,767。 MEDIUMINT:中等整数,占用3字节,有符号范围约 -8百万到 8百万。 INT 或 INTEGER:标准整数,占用4字节,有符号范围约为 -21亿到 21亿,常用于主键。 BIGINT:大整数,占用8字节,适合超大数值,如用户ID在分布式系统中。 FLOAT(M,D):单精度浮点数,用于近似数值,M表示总位数,D为小数位数。 DOUBLE(M,D):双精度浮点数,精度高于FLOAT,适合科学计算。 DECIMAL(M,D):精确小数类型,常用于金额、财务数据,避免浮点误差。字符串类型
用于存储文本或字符数据,根据长度和用途不同有多种选择。
CHAR(N):定长字符串,最大255字符,N指定长度,不足补空格,适合固定长度内容如性别、编号。 VARCHAR(N):变长字符串,最大长度受行大小限制(通常65,535字节),节省空间,常用作姓名、描述等。 TINYTEXT:小型文本,最大255字节,适合短文本内容。 TEXT:普通文本,最大约65KB,用于文章正文、评论等。 MEDIUMTEXT:中型文本,最大约16MB,适合存储较长内容如日志。 LONGTEXT:大型文本,最大约4GB,用于存储超长文本。 ENUM:枚举类型,只能从预定义列表中选一个值,如 ENUM('男','女'),节省空间且提高数据一致性。 SET:集合类型,可存储多个预定义值中的任意组合,最多64个成员。日期和时间类型
用于处理时间相关数据,每种类型有不同的精度和范围。
DATE:只存储日期,格式 'YYYY-MM-DD',范围从 '1000-01-01' 到 '9999-12-31'。 TIME:只存储时间,格式 'HH:MM:SS',也可表示经过的时间间隔。 YEAR:存储年份,可为2位或4位格式,推荐使用4位避免歧义。 DATETIME:日期和时间组合,格式 'YYYY-MM-DD HH:MM:SS',范围大但不带时区。 TIMESTAMP:时间戳类型,自动记录行修改时间,范围较小('1970' 到约 '2038'),受时区影响,常用于日志记录。基本上就这些。选择合适的数据类型要考虑实际业务需求、数据范围、是否需要精度以及后续查询效率。比如金额用 DECIMAL,状态用 TINYINT 或 ENUM,文章内容用 TEXT,时间记录优先考虑 TIMESTAMP 或 DATETIME。正确使用类型能有效提升 MySQL 的稳定性和性能。
