¿Cuándo debo usar INT NO FIRMADO y FIRMADO en MySQL? ¿Qué es mejor usar o esto es solo preferencia personal? Porque lo he visto usado así;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
y
id INT(11) NOT NULL AUTO_INCREMENT
¿Cuándo debo usar INT NO FIRMADO y FIRMADO en MySQL? ¿Qué es mejor usar o esto es solo preferencia personal? Porque lo he visto usado así;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
y
id INT(11) NOT NULL AUTO_INCREMENT
Respuestas:
UNSIGNED
solo almacena números positivos (o cero). Por otro lado, con signo puede almacenar números negativos (es decir, puede tener un signo negativo ).
Aquí hay una tabla de los rangos de valores que cada INTEGER
tipo puede almacenar:
Fuente: http://dev.mysql.com/doc/refman/5.6/en/integer-types.html
UNSIGNED
varía de 0
a n
, mientras que con signo varía de aproximadamente -n/2
a n/2
.
En este caso, tiene una AUTO_INCREMENT
columna de ID, por lo que no tendría negativos. Por lo tanto, use UNSIGNED
. Si no lo usa UNSIGNED
para la AUTO_INCREMENT
columna, su valor máximo posible será la mitad de alto (y la mitad negativa del rango de valores no se usará).
UNSIGNED
es específico de MySQL y no una característica estándar de SQL. Esto significa que el uso UNSIGNED
puede complicar una futura migración a un RDBMS diferente o causarle dificultades al usar bibliotecas de software dirigidas a SQL estándar, como SQLAlchemy. Creo que esto debería ser parte de la respuesta.
Úselo UNSIGNED
para números enteros no negativos.
No estoy de acuerdo con vipin cp .
Lo cierto es que el primer bit se utiliza para representar el signo. Pero 1 es para valores negativos y 0 para valores positivos. Los valores más negativos se codifican de forma diferente (complemento a dos). Ejemplo con TINYINT:
The sign bit
|
1000 0000b = -128d
...
1111 1101b = -3d
1111 1110b = -2d
1111 1111b = -1d
0000 0000b = 0d
0000 0001b = 1d
0000 0010b = 2d
...
0111 1111b = 127d
Para valor entero negativo, SIGNED
se usa y para valor entero no negativo, UNSIGNED
se usa. Siempre sugirió usar UNSIGNED
for id como CLAVE PRIMARIA.
Si conoce el tipo de números que va a almacenar, puede elegir en consecuencia. En este caso, tienes un 'id' que nunca puede ser negativo. Entonces puedes usar unsigned int. Rango de int con signo: -n / 2 a + n / 2 Rango de int sin signo: 0 a n Por lo tanto, tiene el doble de números positivos disponibles. Elija en consecuencia.