什么时候应该在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_INCREMENT
ID列,因此不会有否定的内容。因此,请使用UNSIGNED
。如果您不使用UNSIGNED
该AUTO_INCREMENT
列,则最大可能值将是该值的一半(并且该值范围的负一半将不使用)。
UNSIGNED
是特定于MySQL的,不是标准的SQL功能。这意味着,使用UNSIGNED
面向标准SQL的软件库(例如SQLAlchemy)时,使用可能会使将来向其他RDBMS的迁移更加复杂或给您带来麻烦。我认为这应该是答案的一部分。
对于负整数值,SIGNED
使用;对于非负整数值,UNSIGNED
使用。始终建议将UNSIGNED
id用作主键。