Co oznacza „niepodpisany” w MySQL i kiedy go używać?


278

Co oznacza „bez znaku” w MySQL i kiedy powinienem go używać?

Odpowiedzi:


527

MySQL mówi:

Wszystkie typy liczb całkowitych mogą mieć opcjonalny (niestandardowy) atrybut UNSIGNED. Typu bez znaku można użyć, aby zezwolić tylko na liczby nieujemne w kolumnie lub gdy potrzebny jest większy górny zakres liczbowy dla kolumny. Na przykład, jeśli kolumna INT jest PODPISANA, rozmiar zakresu kolumny jest taki sam, ale jej punkty końcowe przesuwają się z -2147483648 i 2147483647 do 0 i 4294967295.

Kiedy go używam?

Zadaj sobie pytanie: czy to pole kiedykolwiek będzie zawierało wartość ujemną ?
Jeśli odpowiedź brzmi „nie”, wybierz UNSIGNEDtyp danych.

Częstym błędem jest użycie klucza podstawowego, który jest automatycznym przyrostem INTrozpoczynającym się od zera , ale typem jest SIGNED, w takim przypadku nigdy nie dotkniesz żadnej z liczb ujemnych i zmniejszasz zakres możliwych id do połowy.


8
wartości reprezentujące „rozmiary” rzeczy, takie jak ilość konkretnego przedmiotu w zamówieniu lub odległość między dwiema lokalizacjami, zwykle będą niepodpisane
SingleNegationElimination

31
Świetna odpowiedź, wydaje się dziwne, że mysql nie zdefiniowałby liczb całkowitych jako niepodpisanych, gdy są one automatycznie zwiększającymi się tożsamościami?
przewodowy00

3
Jeśli chcesz uzyskać bardziej jednoznaczną odpowiedź, spójrz na stackoverflow.com/a/11515613/6335029
NaveenDA

Naprawdę chciałbym, aby istniał również positiveatrybut, ponieważ wydaje się jeszcze bardziej powszechne, że chcesz pracować tylko z dodatnimi, niezerowymi liczbami.
still_dreaming_1
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.