MySQL - 整数列的大小限制

时间:2013-01-28 23:58:35

标签: mysql phpmyadmin integer

我正在使用phpMyAdmin来创建我的表结构。

我可以从MySQL的文档页面上读到有关整数类型的大小限制: MySQL Integer Types Reference


所以这里是我对创建专栏感到困惑的地方。

我想在表格中创建一个列:tbl_note_categories名为notescounter

我预计自己会在tbl_notes中使用任何特定的categoryid创建数千个音符。但我相信我会为每个categoryid创建数百个音符。

我正在选择:tinyint,smallint,mediumint。 根据上面的文档链接,我猜测smallint是我的最佳选择。

所以这是我的困惑。 PhpMyAdmin要求指定长度/值参数。 我要确保这个新列(notescounter)是无符号的,最多可以达到65536。 这是否意味着我需要长度/值为(5)?

我猜长度是字符长度,但我不确定。 (与varchar比较)

Snapshot of New column in PhpMyadmin

2 个答案:

答案 0 :(得分:48)

不,这是对MySQL的常见误解。实际上,“长度”对整数的大小或它可以存储的值的范围没有影响。

  • TINYINT总是8位,可以存储2个 8 不同的值。
  • SMALLINT总是16位,可以存储2个 16 不同的值。
  • INT总是32位,可以存储2个 32 不同的值。
  • BIGINT总是64位,可以存储2个 64 不同的值。

还有一个MEDIUMINT,但是在MySQL上工作的工程师告诉我,MEDIUMINT总是在内部升级为32位INT,因此使用MEDIUMINT实际上没有任何好处。

长度用于显示,这仅在您使用ZEROFILL选项时才有意义。

请参阅我对What is the difference (when being applied to my code) between INT(10) and INT(12)?

的回答中的示例

答案 1 :(得分:7)

是的,您要指定长度为5。

在MySQL中,整数类型的“length”属性是可选的。这是一个非标准的MySQL扩展。

当从列声明中省略它时,MySQL提供了一个默认值。对于SMALLINT UNSIGNED,默认值为5.

此值对可以为整数类型存储的值范围没有任何影响。它指定了一个“显示长度”,它在结果集元数据中返回,客户端可以选择使用或忽略它。

http://dev.mysql.com/doc/refman/5.5/en/numeric-type-attributes.html