O que significa `unsigned` no MySQL e quando usá-lo?


278

O que significa "unsigned" no MySQL e quando devo usá-lo?

Respostas:


527

O MySQL diz:

Todos os tipos de números inteiros podem ter um atributo opcional (não padrão) UNSIGNED. O tipo não assinado pode ser usado para permitir apenas números não negativos em uma coluna ou quando você precisar de um intervalo numérico superior maior para a coluna. Por exemplo, se uma coluna INT é UNSIGNED, o tamanho do intervalo da coluna é o mesmo, mas seus pontos finais mudam de -2147483648 e 2147483647 até 0 e 4294967295.

Quando eu uso?

Faça a si mesmo esta pergunta: esse campo conterá um valor negativo ?
Se a resposta for não, você deseja um UNSIGNEDtipo de dados.

Um erro comum é usar uma chave primária que é um incremento automático INTcomeçando em zero , mas o tipo é SIGNED: nesse caso, você nunca tocará em nenhum dos números negativos e estará reduzindo o intervalo de IDs possíveis para metade.


8
valores que representam os 'tamanhos' de itens, como a quantidade de um item específico em um pedido ou a distância entre dois locais, normalmente não são assinados
SingleNegationElimination

31
Ótima resposta, parece estranho que o mysql não use como padrão números inteiros como não assinados quando eles aumentam automaticamente as identidades?
wired00

3
Se você quiser resposta mais clara depois olhar este stackoverflow.com/a/11515613/6335029
NaveenDA

Eu realmente gostaria que houvesse também um positiveatributo, pois parece ainda mais comum que você queira trabalhar apenas com números positivos, diferentes de zero.
still_dreaming_1
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.