Cosa significa "unsigned" in MySQL e quando usarlo?


278

Cosa significa "unsigned" in MySQL e quando dovrei usarlo?

Risposte:


527

MySQL dice:

Tutti i tipi di numeri interi possono avere un attributo facoltativo (non standard) UNSIGNED. Il tipo senza segno può essere utilizzato per consentire solo numeri non negativi in ​​una colonna o quando è necessario un intervallo numerico superiore più grande per la colonna. Ad esempio, se una colonna INT è UNSIGNED, la dimensione dell'intervallo della colonna è la stessa ma i suoi endpoint passano da -2147483648 e 2147483647 a 0 e 4294967295.

Quando lo uso?

Ponetevi questa domanda: questo campo conterrà mai un valore negativo ?
Se la risposta è no, allora si desidera un UNSIGNEDtipo di dati.

Un errore comune è usare una chiave primaria che è un auto-incremento che INTinizia da zero , ma il tipo è SIGNED, in quel caso non toccherai mai nessuno dei numeri negativi e riduci la gamma di possibili ID alla metà.


8
i valori che rappresentano le "dimensioni" delle cose, come la quantità di un particolare articolo in un ordine o la distanza tra due posizioni, saranno in genere non firmati
SingleNegationElimination

31
Ottima risposta, sembra strano che mysql non imposti gli interi predefiniti su unsigned quando stanno incrementando automaticamente le identità?
cablato il

3
Se si vuole risposta più chiara poi guardare questo stackoverflow.com/a/11515613/6335029
NaveenDA

Vorrei davvero che ci fosse anche un positiveattributo, poiché sembra ancora più comune che tu voglia lavorare solo con numeri positivi, diversi da zero.
still_dreaming_1,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.