Mysql中int(1)的误解及说明

在mysql中使用int相关的数据类型时, 如果不太了解其存储方式, 会产生一些误用的情况.
如: 只保存0-9之间的数字, 可能会直接用int(1).
习惯性的以为int(1)就相当于varchar(1)一样, 其实不然.
下面来说下int相关数据类型的一些简单介绍:

  • 数据类型/字节及取值范围
类型 字节 最小值 最大值
tinyint 1 -128 127
smallint 2 -32768 32767
mediumint 3 -8388608 8388607
int 4 -2147483648 2147483647
bigint 8 -9223372036854775808 9223372036854775807
  • 数据定义

    • TINYINT[(M)] [UNSIGNED] [ZEROFILL] M默认为4
    • SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默认为6
    • MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默认为9
    • INT[(M)] [UNSIGNED] [ZEROFILL] M默认为11
    • BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默认为20
  • 说明

    M不是存储数据的具体长度, 而是要与ZeroFill配合使用.
    也就是说int(1)与int(10)其实存储的数据范围是一致的.


    而后面数字, 只有指定zerofill才会生效.
    如: int(4) zerofill, 值为1, 则数据库中保存的是:0001

原文地址:https://www.cnblogs.com/leo-li-3046/p/5690646.html