MySQL数据库支持多种数据类型,主要分为三大类:数值类型、字符串(字符)类型和日期时间类型。合理选择数据类型有助于提升数据库性能、节省存储空间。
数值类型
用于存储数字数据,包括整数和浮点数。
• TINYINT:非常小的整数,占用1字节,范围是-128到127(有符号),或0到255(无符号)。• SMALLINT:小整数,占用2字节,范围约±3万。
• MEDIUMINT:中等整数,占用3字节,范围约±8百万。
• INT:标准整数,占用4字节,范围约±21亿,最常用。
• BIGINT:大整数,占用8字节,适合存储超大数值,如用户ID、时间戳等。
• FLOAT:单精度浮点数,用于小数,精度约7位。
• DOUBLE:双精度浮点数,精度更高,约15位,适合科学计算。
• DECIMAL(M,D):定点数,精确存储小数,M是总位数,D是小数位数,常用于金额字段。
字符串类型
用于存储文本或字符数据。
• CHAR(N):固定长度字符串,最大255字符,不足部分用空格填充,适合长度固定的值如性别、状态码。• VARCHAR(N):可变长度字符串,最大65535字节(受行大小限制),实际使用更常见,节省空间。
• TEXT:用于存储较长文本,最大65,535字符,不支持默认值,适合文章内容。
• MEDIUMTEXT:中等长度文本,最大约16MB。
• LONGTEXT:大文本,最大约4GB,适合存储日志或大段内容。
• ENUM:枚举类型,只能取预定义的值之一,例如 ENUM('男','女'),节省空间且提高一致性。
• SET:集合类型,可存储多个预定义值中的任意组合。
日期和时间类型
用于处理时间相关数据。
• DATE:只包含日期,格式为 'YYYY-MM-DD',范围从 '1000-01-01' 到 '9999-12-31'。• TIME:表示时间或时间间隔,格式 'HH:MM:SS',支持时区偏移。
• DATETIME:日期和时间组合,格式 'YYYY-MM-DD HH:MM:SS',范围较大,但不带时区。
• TIMESTAMP:时间戳,自动转换为UTC存储,显示时转回当前时区,适合记录创建/修改时间。
• YEAR:年份类型,可表示 1901 到 2155 年,占用1字节。
基本上就这些。根据实际业务需求选择合适的数据类型,比如金额用 DECIMAL,状态用 ENUM,长文本选 TEXT,时间记录优先考虑 TIMESTAMP。正确使用类型能有效避免数据溢出、精度丢失等问题。不复杂但容易忽略。
