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

215voto

Wiseguy Points 9441

UNSIGNED ne stocke que des nombres positifs (ou zéro). En revanche, le signe peut stocker des nombres négatifs (c'est-à-dire qu'il peut avoir une valeur négative). signe ).

Voici un tableau des fourchettes de valeurs de chacun d'entre eux INTEGER peut stocker :

MySQL INTEGER types and lengths
Source : http://dev.mysql.com/doc/refman/5.6/en/integer-types.html

UNSIGNED varie de 0 à n tandis que la signature varie d'environ -n/2 à n/2 .

Dans ce cas, vous avez un AUTO_INCREMENT colonne d'identification, afin de ne pas avoir de négatifs. Ainsi, utilisez UNSIGNED . Si vous n'utilisez pas UNSIGNED pour le AUTO_INCREMENT votre valeur maximale possible sera deux fois moins élevée (et la moitié négative de la plage de valeurs ne sera pas utilisée).

11voto

Paul Denisevich Points 1779

Utilisez UNSIGNED pour les entiers non négatifs.

6voto

user1096901 Points 53

En fait, avec UNSIGNED vous vous donnez deux fois plus d'espace pour le nombre entier puisque vous spécifiez explicitement que vous n'avez pas besoin de nombres négatifs (généralement parce que les valeurs que vous stockez ne seront jamais négatives).

2voto

Pour une valeur entière négative, SIGNED est utilisé et pour les valeurs entières non négatives, UNSIGNED est utilisé. Il est toujours conseillé d'utiliser UNSIGNED pour id comme PRIMARY KEY.

1voto

Kamal Points 21

Je pense, UNSIGNED serait la meilleure option pour stocker quelque chose comme time_duration (Par ex : resolved_call_time = resolved_time(DateTime)-creation_time(DateTime) ) en format minutes, heures ou secondes, qui sera certainement un nombre non négatif.

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