29

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

我可以从 MySQL 的文档页面中阅读有关整数类型的大小限制: MySQL 整数类型参考


所以这里是我对创建列有点困惑的地方。

我想在表中创建一列:tbl_note_categories称为notescounter

我没有预见到自己会在tbl_notes任何特定的categoryid. 但我相信我会为每个类别创建数百个注释。

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

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

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

PhpMyadmin 中新列的快照

4

2 回答 2

56

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

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

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

长度用于显示,仅当您使用该ZEROFILL选项时才重要。

请参阅我对 INT(10) 和 INT(12) 之间有什么区别(应用于我的代码时)的回答中的示例?

于 2013-01-29T00:01:44.817 回答
7

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

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

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

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

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

于 2013-01-29T14:47:44.510 回答