Que signifie «non signé» dans MySQL et quand l'utiliser?

278

Que signifie "non signé" dans MySQL et quand dois-je l'utiliser?

AIDEZ-MOI
la source

Réponses:

527

MySQL dit:

Tous les types entiers peuvent avoir un attribut facultatif (non standard) UNSIGNED. Le type non signé peut être utilisé pour autoriser uniquement les nombres non négatifs dans une colonne ou lorsque vous avez besoin d'une plage numérique supérieure plus grande pour la colonne. Par exemple, si une colonne INT est UNSIGNED, la taille de la plage de la colonne est la même, mais ses points de terminaison passent de -2147483648 et 2147483647 à 0 et 4294967295.

Quand dois-je l'utiliser?

Posez-vous cette question: ce champ contiendra-t-il un jour une valeur négative ?
Si la réponse est non, vous souhaitez un UNSIGNEDtype de données.

Une erreur courante consiste à utiliser une clé primaire qui est un incrémentation automatique INTcommençant à zéro , mais le type est SIGNED, dans ce cas, vous ne toucherez jamais aucun des nombres négatifs et vous réduisez la plage des identifiants possibles de moitié.

codaddict
la source
8
les valeurs représentant la «taille» des choses, comme la quantité d'un article particulier sur une commande, ou la distance entre deux emplacements, seront généralement non signées
SingleNegationElimination
31
Grande réponse, semble étrange que mysql ne serait pas par défaut des entiers à unsigned quand ils sont des identités à incrémentation automatique?
filaire00
3
Si vous voulez une réponse plus claire, regardez ce stackoverflow.com/a/11515613/6335029
NaveenDA
Je souhaite vraiment qu'il y ait également un positiveattribut, car il semble encore plus courant que vous ne souhaitiez travailler qu'avec des nombres positifs et non nuls.
still_dreaming_1