Quando devo usar UNSIGNED e SIGNED INT no MySQL? O que é melhor usar ou isso é apenas preferência pessoal? Porque eu já vi ser usado assim;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
e
id INT(11) NOT NULL AUTO_INCREMENT
Quando devo usar UNSIGNED e SIGNED INT no MySQL? O que é melhor usar ou isso é apenas preferência pessoal? Porque eu já vi ser usado assim;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
e
id INT(11) NOT NULL AUTO_INCREMENT
Respostas:
UNSIGNED
armazena apenas números positivos (ou zero). Por outro lado, assinado pode armazenar números negativos (ou seja, pode ter um sinal negativo ).
Aqui está uma tabela dos intervalos de valores que cada INTEGER
tipo pode armazenar:
Fonte: http://dev.mysql.com/doc/refman/5.6/en/integer-types.html
UNSIGNED
varia de 0
a n
, enquanto o sinalizado varia de aproximadamente -n/2
a n/2
.
Nesse caso, você tem uma AUTO_INCREMENT
coluna de ID, portanto, não terá negativos. Portanto, use UNSIGNED
. Se você não usar UNSIGNED
para a AUTO_INCREMENT
coluna, seu valor máximo possível será a metade maior (e a metade negativa do intervalo de valores não será usada).
UNSIGNED
é específico do MySQL e não um recurso SQL padrão. Isso significa que o uso UNSIGNED
pode tornar uma migração futura para um RDBMS diferente mais complicada ou causar dificuldades ao usar bibliotecas de software voltadas para SQL padrão, como SQLAlchemy. Acho que isso deve ser parte da resposta.
Use UNSIGNED
para números inteiros não negativos.
Não concordo com o vipin cp .
A verdade é que o primeiro bit é usado para representar o sinal. Mas 1 é para valores negativos e 0 é para valores positivos. Mais valores negativos são codificados de maneira diferente (complemento de dois). Exemplo com 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 valores inteiros negativos, SIGNED
é usado e para valores inteiros não negativos, UNSIGNED
é usado. Sempre sugeriu usar UNSIGNED
para id como uma CHAVE PRIMÁRIA.
Se você souber o tipo de número que armazenará, poderá escolher de acordo. Neste caso, você tem 'id', que nunca pode ser negativo. Portanto, você pode usar o int sem sinal. Intervalo de int com sinal: -n / 2 a + n / 2 Intervalo de int sem sinal: 0 a n Portanto, você tem o dobro do número de números positivos disponíveis. Escolha de acordo.