Kiedy należy używać UNSIGNED i SIGNED INT w MySQL? Co jest lepsze w użyciu, czy to tylko osobiste preferencje? Ponieważ widziałem, jak to jest używane;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
i
id INT(11) NOT NULL AUTO_INCREMENT
Kiedy należy używać UNSIGNED i SIGNED INT w MySQL? Co jest lepsze w użyciu, czy to tylko osobiste preferencje? Ponieważ widziałem, jak to jest używane;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
i
id INT(11) NOT NULL AUTO_INCREMENT
Odpowiedzi:
UNSIGNEDprzechowuje tylko liczby dodatnie (lub zero). Z drugiej strony, podpisany może przechowywać liczby ujemne (tj. Może mieć znak ujemny ).
Oto tabela zakresów wartości, które INTEGERmoże przechowywać każdy typ:

Źródło: http://dev.mysql.com/doc/refman/5.6/en/integer-types.html
UNSIGNEDwaha się od 0do n, a ze znakiem od około -n/2do n/2.
W takim przypadku masz AUTO_INCREMENTkolumnę ID, więc nie masz negatywów. Dlatego użyj UNSIGNED. Jeśli nie użyjesz UNSIGNEDdla AUTO_INCREMENTkolumny, maksymalna możliwa wartość będzie o połowę niższa (a ujemna połowa zakresu wartości pozostanie niewykorzystana).
UNSIGNEDjest to specyficzne dla MySQL, a nie standardowa funkcja SQL. Oznacza to, że używanie UNSIGNEDmoże utrudnić przyszłą migrację do innego RDBMS lub spowodować trudności podczas korzystania z bibliotek oprogramowania przeznaczonych dla standardowego języka SQL, takiego jak SQLAlchemy. Myślę, że to powinno być częścią odpowiedzi.
Posługiwać się UNSIGNED do nieujemnych liczb całkowitych.
Nie zgadzam się z vipin cp .
Prawdą jest, że pierwszy bit jest używany do reprezentowania znaku. Ale 1 oznacza wartości ujemne, a 0 - wartości dodatnie. Co więcej, wartości ujemne są kodowane w inny sposób (dopełnienie do dwóch). Przykład z 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
Dla ujemnej wartości całkowitej SIGNEDjest używana, a dla nieujemnej liczby całkowitej UNSIGNEDjest używana. Zawsze sugerowano użycie UNSIGNEDidentyfikatora jako klucza podstawowego.
Jeśli znasz rodzaj numerów, które zamierzasz przechowywać, możesz odpowiednio wybrać. W tym przypadku masz 'id', które nigdy nie może być ujemne. Możesz więc użyć unsigned int. Zakres liczby int ze znakiem: -n / 2 do + n / 2 Zakres liczby int bez znaku: od 0 do n Mamy więc podwojoną liczbę dostępnych liczb dodatnich. Wybierz odpowiednio.