问题:MySQL 数据类型 INT(11) 而 UNSIGNED INT(10)?

在 MySQL 中,如果我们创建一个字段 dataType 为INT并且没有指定任何长度/值,那么它会自动变为int(11),如果我们设置属性 UNSIGNEDUNSIGNED ZEROFILL 则它会变为int(10)

这个 length(1) 去哪儿了?

解答

int 值可以是 -2147483648 这些是 11 位,所以默认的 display 大小是 11

unsigned int 不允许负数,因此默认情况下它只需要 display 大小 10

正如下面的文档所示,存储 SIGNED INT 和 UNSIGNED INT 所需的位数是相同的,可存储数字的范围只是移动了:

无符号类型可用于在列中只允许非负数,或者当您需要更大的列上数字范围时。例如,如果 INT 列是 UNSIGNED,则列范围的大小相同,但其端点从 -2147483648 和 2147483647 移动到 0 和 4294967295。

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐