博客
关于我
mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
阅读量:791 次
发布时间:2023-02-11

本文共 1006 字,大约阅读时间需要 3 分钟。

MySQL 数据库中,整数类型的选择会直接影响存储空间的使用和性能表现。本文将详细解析不同整数类型的区别及存储特性。

整数类型的选择主要取决于数据范围和应用需求。以下是常见的整数类型及其特性:

  • TINYINT:占用1字节的存储空间。其范围为-128到127(带符号)或0到255(无符号)。TINYINT(1)与BOOL、BOOLEAN类型等同,用于存储布尔值。默认情况下,M的值为4,表示最小存储单元。

  • SMALLINT:占用3字节。带符号的范围为-32768到32767,无符号范围为0到65535。适用于中小型整数值。

  • MEDIUMINT:占用4字节。带符号范围为-8388608到8388607,无符号范围为0到16777215。适用于需要更大存储空间但不超过整数范围的场景。

  • INT:占用4字节。带符号范围为-2147483648到2147483647,无符号范围为0到4294967295。INT类型是MySQL中最常用的整数类型。

  • BIGINT:占用8字节。带符号范围为-9223372036854775808到9223372036854775807,无符号范围为0到18446744073709551615。BIGINT类型用于存储大整数值。

  • 需要注意的是,M值并不是直接决定存储字节数量的标准。M的值仅用于表示数据类型的最小存储单元,实际存储字节数量取决于数据类型的选择。例如,TINYINT(4)并不意味着存储4字节值,而是表示最小存储单元为4字节。

    对于字符类型,CHARVARCHAR的主要区别在于存储方式:

    • CHAR:固定长度类型,存储空间为M字节。若存储值的长度小于M,数据库会在右侧补充空格。这些空格在查询时会被去除。

    • VARCHAR:可变长度类型,存储空间根据实际数据长度自动调整。VARCHAR类型还额外包含一个记录长度的字节。

    MySQL在处理数据类型转换时,遵循以下规则:

  • 当一个数据表中所有数据列的长度都为固定值时,整个数据表的存储空间为固定值。
  • 数据表中存在任何一个可变长度数据列时,所有数据行的存储空间均为可变长度。
  • 此外,为了优化存储空间,MySQL会将固定长度类型转换为可变长度类型,但有一些例外情况。例如,长度小于4个字符的CHAR类型不会被转换为VARCHAR类型。

    理解这些类型特性有助于优化数据库设计,选择合适的数据类型可以显著提升数据库性能和存储效率。

    转载地址:http://rsbfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL 存储过程参数:in、out、inout
    查看>>
    mysql 存储过程每隔一段时间执行一次
    查看>>
    mysql 存在update不存在insert
    查看>>
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>
    Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
    查看>>
    Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
    查看>>
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>
    mysql 实现主从复制/主从同步
    查看>>
    mysql 审核_审核MySQL数据库上的登录
    查看>>
    mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
    查看>>
    mysql 导入导出大文件
    查看>>
    mysql 常用
    查看>>
    MySQL 常用列类型
    查看>>
    mysql 常用命令
    查看>>
    Mysql 常见ALTER TABLE操作
    查看>>
    mysql 往字段后面加字符串
    查看>>
    mysql 快速自增假数据, 新增假数据,mysql自增假数据
    查看>>
    Mysql 报错 Field 'id' doesn't have a default value
    查看>>
    MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
    查看>>
    mysql 排序id_mysql如何按特定id排序
    查看>>