MySQL数据类型全解析

MySQL数据类型全解析 好的MySQL 支持多种数据类型用于定义表中列可以存储的数据种类。合理选择数据类型对数据库的性能、存储空间和数据的准确性至关重要。以下是一些主要分类和常用类型 1. 数值类型用于存储数字值可分为整数类型和浮点数/定点数类型。整数类型TINYINT: 非常小的整数范围约为 $[-128, 127]$有符号或 $[0, 255]$无符号占用1 字节。SMALLINT: 较小的整数范围约为 $[-32768, 32767]$有符号或 $[0, 65535]$无符号占用2 字节。INT/INTEGER: 标准大小的整数范围约为 $[-2^{31}, 2^{31}-1]$有符号或 $[0, 2^{32}-1]$无符号占用4 字节。BIGINT: 大整数范围约为 $[-2^{63}, 2^{63}-1]$有符号或 $[0, 2^{64}-1]$无符号占用8 字节。浮点数与定点数类型FLOAT(M, D): 单精度浮点数$M$ 是总位数$D$ 是小数位数。占用4 字节精度约为7 位。DOUBLE(M, D): 双精度浮点数$M$ 是总位数$D$ 是小数位数。占用8 字节精度约为15 位。DECIMAL(M, D)/NUMERIC(M, D):高精度定点数$M$ 是总位数$D$ 是小数位数。用于存储精确数值如货币金额存储空间可变。 2. 字符串类型用于存储文本或二进制数据。文本字符串CHAR(N):定长字符串长度固定为 $N$ 个字符$0 \leq N \leq 255$。存储效率高但可能浪费空间。VARCHAR(N):变长字符串最大长度为 $N$ 个字符$0 \leq N \leq 65535$。节省空间但处理稍慢。TEXT: 用于存储长文本如文章内容最大长度约65,535字节。二进制字符串BINARY(N): 定长二进制数据长度固定为 $N$ 字节。VARBINARY(N): 变长二进制数据最大长度为 $N$ 字节。BLOB: 用于存储大型二进制对象如图片、文件最大长度约65,535字节。⏰ 3. 日期与时间类型用于存储日期和时间信息。DATE: 存储日期年月日格式为YYYY-MM-DD范围约为 $[1000-01-01, 9999-12-31]$。TIME: 存储时间时分秒格式为HH:MM:SS范围约为 $[-838:59:59, 838:59:59]$。DATETIME: 存储日期和时间格式为YYYY-MM-DD HH:MM:SS范围约为 $[1000-01-01 00:00:00, 9999-12-31 23:59:59]$。TIMESTAMP: 存储时间戳从1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC占用4 字节自动记录修改时间。YEAR: 存储年份支持YYYY格式如2023。 4. 枚举与集合类型用于存储预定义的离散值。ENUM(val1, val2, ...): 枚举类型只能存储一个预定义值如ENUM(男, 女)。SET(val1, val2, ...): 集合类型可存储多个预定义值如SET(阅读,运动,音乐)。 5. 空间数据类型GIS用于存储地理空间信息如点、线、面。GEOMETRYPOINTLINESTRINGPOLYGON 常用类型总结表类型描述示例存储空间INT整数age INT4 字节DECIMAL(10,2)高精度小数如金额price DECIMAL(10,2)可变VARCHAR(100)变长字符串如用户名name VARCHAR(100)可变DATETIME日期与时间created_at DATETIME8 字节ENUM(Y,N)枚举值如是否启用status ENUM(Y,N)1-2 字节 选择建议精确数值用DECIMAL避免浮点误差。短文本优先用VARCHAR长文本用TEXT。时间记录需更新时用TIMESTAMP否则用DATETIME。固定选项如状态用ENUM或SET。合理的数据类型设计能提升查询效率并减少存储成本建议结合业务需求谨慎选择。