首页 文章

在MySQL中使用INT(1)和TINYINT(1)有区别吗?

提问于
浏览
39

我假设INT(1)与TINYINT(1)完全相同,但我真的不知道 . 每当我的值只能是一个整数(例如值0-9)时,我总是只使用INT(1)来表示它是一个整数而且它只是一个字符,我认为这意味着它只能是0到9的值(如果我错了,请向我解释) . 我总是忽略你可以将数字转换成其他类型的INT . 我不懂MySQL,并且倾向于避免使用它可以做的更复杂的事情 .

So my question, is there any difference between the various integer types INT, TINYINT, SMALLINT, MEDIUMINT, and BIGINT if you define a length of 1 for each type;? 如果没有,我是否应该使用它们(我可以看到使用它们以获得更多的语义含义,TINYINT比INT更具体)?如果是这样,我可以轻松地(和/或我应该)通过我的数据库并将我的所有INT(1)字段更改为TINYINT(1)字段吗?

3 回答

  • 45

    整数列类型的括号中的数字是“显示宽度” . 这不会影响存储要求,因为它们是预定义的 .

    进一步阅读

  • 1

    在这里,您将以更好的方式理解它!

    tinyint: 1 byte, -128 to +127 / 0 to 255 (unsigned)
    smallint: 2 bytes, -32,768 to +32,767 / 0 to 65,535 (unsigned)
    mediumint: 3 bytes, -8,388,608 to 8,388,607 / 0 to 16,777,215 (unsigned)
    int/integer: 4 bytes, -2,147,483,648 to +2,147,483,647 / 0 to 4,294,967,295 (unsigned)
    bigint: 8 bytes, -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 / 0 to 18,446,744,073,709,551,615 (unsigned)
    
  • 37

    正如接受的答案解释:

    括号中的数字表示要显示该字段的字符数, not 字段的存储大小 .

    但是如果你想知道存储大小,你应该检查MySQL源文件 .

    资料来源:MySQL Docs: Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

    TINYINT:1字节,-128到127有符号,0到255无符号SMALLINT:2字节,-32768到32767有符号,0到65535无符号MEDIUMINT:3字节,-8388608到8388607有符号,0到16777215无符号INT:4字节,-2147483648到2147483647 signed,0到4294967295 unsigned BIGINT:8个字节,-2 ^ 63到2 ^ 63-1 signed,0到2 ^ 64-1 unsigned

相关问题