什么时候应该在MySQL中使用UNSIGNED和SIGNED INT?使用哪种更好,或者这只是个人偏爱?因为我已经看到它像这样使用;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
和
id INT(11) NOT NULL AUTO_INCREMENT
什么时候应该在MySQL中使用UNSIGNED和SIGNED INT?使用哪种更好,或者这只是个人偏爱?因为我已经看到它像这样使用;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
和
id INT(11) NOT NULL AUTO_INCREMENT
Answers:
UNSIGNED仅存储正数(或零)。另一方面,带符号可以存储负数(即,可以带负号)。
这是每种INTEGER类型可以存储的值范围的表:

资料来源:http : //dev.mysql.com/doc/refman/5.6/en/integer-types.html
UNSIGNED范围从0到n,而有符号范围从-n/2到n/2。
在这种情况下,您有一个AUTO_INCREMENTID列,因此不会有否定的内容。因此,请使用UNSIGNED。如果您不使用UNSIGNED该AUTO_INCREMENT列,则最大可能值将是该值的一半(并且该值范围的负一半将不使用)。
UNSIGNED是特定于MySQL的,不是标准的SQL功能。这意味着,使用UNSIGNED面向标准SQL的软件库(例如SQLAlchemy)时,使用可能会使将来向其他RDBMS的迁移更加复杂或给您带来麻烦。我认为这应该是答案的一部分。
对于负整数值,SIGNED使用;对于非负整数值,UNSIGNED使用。始终建议将UNSIGNEDid用作主键。