博客
关于我
mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
阅读量:790 次
发布时间: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 优化器 key_mysql – 选择*和查询优化器
    查看>>
    MySQL 优化:Explain 执行计划详解
    查看>>
    Mysql 会导致锁表的语法
    查看>>
    mysql 使用sql文件恢复数据库
    查看>>
    mysql 修改默认字符集为utf8
    查看>>
    Mysql 共享锁
    查看>>
    MySQL 内核深度优化
    查看>>
    mysql 内连接、自然连接、外连接的区别
    查看>>
    mysql 写入慢优化
    查看>>
    mysql 分组统计SQL语句
    查看>>
    Mysql 分页
    查看>>
    Mysql 分页语句 Limit原理
    查看>>
    MySql 创建函数 Error Code : 1418
    查看>>
    MySQL 创建新用户及授予权限的完整流程
    查看>>
    mysql 创建表,不能包含关键字values 以及 表id自增问题
    查看>>
    mysql 删除日志文件详解
    查看>>
    mysql 判断表字段是否存在,然后修改
    查看>>
    MySQL 到底能不能放到 Docker 里跑?
    查看>>
    mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
    查看>>
    mysql 协议的退出命令包及解析
    查看>>