MySQL中的“无符号”是什么意思以及何时使用它?


278

在MySQL中“无符号”是什么意思,什么时候应该使用它?

Answers:


527

MySQL说:

所有整数类型都可以具有可选的(非标准)属性UNSIGNED。无符号类型可用于仅允许一列中使用非负数, 或者在您需要该列的较大数字上限时使用。例如,如果INT列为UNSIGNED,则该列的范围大小相同,但其端点从-2147483648和2147483647变为0和4294967295。

什么时候使用?

问自己一个问题:该字段是否会包含负值
如果答案是否定的,那么您需要一种UNSIGNED数据类型。

一个常见的错误是使用INT0开始自动递增的主键,但是类型为SIGNED,在这种情况下,您永远都不会碰到任何负数,并且会将可能的id的范围减小到一半。


8
表示事物“大小”的值(例如订单上特定项目的数量或两个位置之间的距离)通常是无符号的
SingleNegationElimination 2010年

31
很好的答案,这似乎很奇怪,MySQL在自动递增身份时不会默认整数为无符号?
00:00有线

3
如果您想获得更清晰的答案,请查看此 stackoverflow.com/a/11515613/6335029
NaveenDA,2017年

我真的很希望有一个positive属性,因为似乎更常见的是只想使用正数,非零数。
still_dreaming_1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.