MySQL数据库的数据类型

发布于:2025-03-05 ⋅ 阅读:(12) ⋅ 点赞:(0)

1.设置MySQL服务器的默认储存引擎

set default_storage_engine=MYISAM

2. 数值类型

整数类型
  • TINYINT1字节,范围:-128~127(有符号),0~255(无符号)。适用于状态码、布尔值(MySQL无BOOL类型,用TINYINT(1)代替)。

  • SMALLINT2字节,范围:-32768~32767。适用于小范围ID或计数。

  • MEDIUMINT3字节,范围:-8388608~8388607。适用于中等范围数据。

  • INT4字节,范围:-2147483648~2147483647。常用作主键或大计数。

  • 布尔型BIGINT8字节,范围极大。用于超大整数如全球唯一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)上建索引,可用前缀索引。