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.