135 votes

Quand dois-je utiliser UNSIGNED et SIGNED INT dans MySQL ?

Quand dois-je utiliser UNSIGNED et SIGNED INT dans MySQL ? Qu'est-ce qui est le mieux à utiliser ou est-ce juste une préférence personnelle ? Parce que j'ai déjà vu cette utilisation ;

id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT

et

id INT(11) NOT NULL AUTO_INCREMENT

1voto

Kinga the Witch Points 111

Je ne suis pas d'accord avec vipin cp .

Le vrai est que le premier bit est utilisé pour représenter le signe. Mais 1 est pour le négatif et 0 est pour les valeurs positives. De plus, les valeurs négatives sont codées de manière différente (complément à deux). Exemple avec 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

0voto

vipin cp Points 1507

Une chose que je voudrais ajouter Dans un signed int qui est le default value in mysql , 1 bit sera utilisé pour représenter sign . -1 for negative and 0 for positive. Ainsi, si votre application n'insère que des valeurs positives, il est préférable de spécifier unsigned.

0voto

Debanik Dawn Points 595

Si vous connaissez le type de chiffres que vous allez stocker, vous pouvez choisir en conséquence. Dans ce cas, vous avez 'id' qui ne peut jamais être négatif. Vous pouvez donc utiliser un int non signé. Gamme des int signés : -n/2 à +n/2 Plage des int non signés : 0 à n Vous avez donc deux fois le nombre de nombres positifs disponibles. Choisissez en conséquence.

0voto

terryer Points 1

Si vous voulez rester simple, vous devez garder à l'esprit que vous pouvez également calculer avec ces chiffres (soustraction). Si vous calculez par exemple A - B et que B est plus grand que A, vous pouvez avoir des problèmes. Dans ce cas, vous devrez convertir le nombre SIGNÉ en un nombre NON SIGNÉ.

Vous pouvez par exemple en savoir plus à ce sujet ici : BIGINT UNSIGNED VALUE IS out of range Mon SQL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X