¿Qué significa `unsigned` en MySQL y cuándo usarlo?


278

¿Qué significa "sin firmar" en MySQL y cuándo debo usarlo?

Respuestas:


527

MySQL dice:

Todos los tipos enteros pueden tener un atributo opcional (no estándar) SIN FIRMAR. El tipo sin signo se puede usar para permitir solo números no negativos en una columna o cuando necesite un rango numérico superior más grande para la columna. Por ejemplo, si una columna INT no está FIRMADA, el tamaño del rango de la columna es el mismo, pero sus puntos finales cambian de -2147483648 y 2147483647 a 0 y 4294967295.

¿Cuándo lo uso?

Hágase esta pregunta: ¿contendrá este campo alguna vez un valor negativo ?
Si la respuesta es no, entonces desea un UNSIGNEDtipo de datos.

Un error común es usar una clave principal que es un incremento automático que INTcomienza en cero , pero el tipo es SIGNED, en ese caso, nunca tocará ninguno de los números negativos y reducirá el rango de posibles identificaciones a la mitad.


8
los valores que representan los "tamaños" de las cosas, como la cantidad de un artículo en particular en un pedido o la distancia entre dos ubicaciones, generalmente no estarán firmados
SingleNegationElimination

31
Gran respuesta, ¿parece extraño que mysql no predeterminara enteros a sin signo cuando están incrementando automáticamente las identidades?
wired00

3
Si quieres una respuesta más clara, mira este stackoverflow.com/a/11515613/6335029
NaveenDA

Realmente desearía que también hubiera un positiveatributo, ya que parece aún más común que solo quieras trabajar con números positivos que no sean cero.
still_dreaming_1
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.