1.设置MySQL服务器的默认储存引擎
set default_storage_engine=MYISAM
2. 数值类型
整数类型
TINYINT:1字节,范围:-128~127(有符号),0~255(无符号)。适用于状态码、布尔值(MySQL无BOOL类型,用TINYINT(1)代替)。
SMALLINT:2字节,范围:-32768~32767。适用于小范围ID或计数。
MEDIUMINT:3字节,范围:-8388608~8388607。适用于中等范围数据。
INT:4字节,范围:-2147483648~2147483647。常用作主键或大计数。
布尔型BIGINT:8字节,范围极大。用于超大整数如全球唯一ID。
-
查看系统帮助
help +数据类型;
浮点数与定点数
FLOAT:4字节,单精度浮点数,近似值。适用于科学数据。
DOUBLE:8字节,双精度浮点数,精度更高。
DECIMAL(M,D):精确小数,M为总位数,D为小数位数。适用于财务计算。
区别
3. 日期与时间类型
DATE:3字节,格式'YYYY-MM-DD',存储日期。
TIME:3字节,格式'HH:MM:SS ',时间值。
DATETIME:8字节,范围'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。不涉及时区。
TIMESTAMP:4字节,范围'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC,自动转换时区。
YEAR:1字节,存储年份。
4. 字符串类型
短文本
CHAR(N):定长字符串,最多255字符。适合固定长度如MD5哈希。
VARCHAR(N):变长字符串,最多65535字节(实际受行大小限制)。适合可变长度如用户名。
BINARY/VARBINARY:类似CHAR/VARCHAR,但存储二进制数据,区分大小写。
长文本与二进制
TEXT系列:TINYTEXT (255B)、TEXT (64KB)、MEDIUMTEXT (16MB)、LONGTEXT (4GB)。存储大文本,如文章内容。
5. 枚举与集合
ENUM:单选字符串,最多65535个选项。存储时用整数索引,节省空间。
SET:多选字符串,最多64个成员。存储为位掩码。
BLOB系列:类似TEXT,但存储二进制数据(如图片、文件)。
JSON:存储JSON格式数据,自动验证有效性。支持路径查询和部分更新
6.空间数据类型
GEOMETRY、POINT、LINESTRING等:用于地理数据,需GIS函数支持。
8.注意事项与最佳实践
数值类型选择:
优先选择最小适用类型以减少存储。
精确计算用DECIMAL,避免FLOAT/DOUBLE的精度丢失。
日期类型:
跨时区应用使用TIMESTAMP,否则用DATETIME。
避免使用字符串存储日期,以利用日期函数。
字符串类型:
VARCHAR长度按需设置,避免过度分配。
TEXT/BLOB可能影响性能,考虑分表或文件存储。
ENUM/SET:
ENUM适用于静态选项,频繁变更的选项用关联表代替。
SET的成员数量有限,超出时需重新设计。
JSON类型:
适合半结构化数据,但复杂查询可能影响性能。
使用虚拟列加索引优化JSON查询。
索引优化:
短字段(如INT)索引效率高于长字段(如VARCHAR(255))。
避免在长文本字段(TEXT)上建索引,可用前缀索引。