Когда я должен использовать UNSIGNED и SIGNED INT в MySQL?
когда я должен использовать UNSIGNED и SIGNED INT в MySQL ? Что лучше использовать или это просто личное предпочтение ? Потому что я видел, как это используется;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
и
id INT(11) NOT NULL AUTO_INCREMENT
7 ответов:
UNSIGNED
хранит только положительные числа (или нуль). С другой стороны, signed может хранить отрицательные числа (т. е. может иметь отрицательное знак).Вот таблица диапазонов значений каждого
INTEGER
тип может хранить:
источник:http://dev.mysql.com/doc/refman/5.6/en/integer-types.html
UNSIGNED
составляет от0
доn
, находясь в диапазоне от о-n/2
доn/2
.в этом случае, у вас есть
AUTO_INCREMENT
столбец ID, поэтому у вас не будет негативов. Таким образом, используйтеUNSIGNED
. Если вы не используетеUNSIGNED
наAUTO_INCREMENT
столбец, ваше максимально возможное значение будет вдвое выше (и отрицательная половина диапазона значений не будет использоваться).
в принципе с
UNSIGNED
, вы даете себе в два раза больше места для целого числа, так как вы явно указываете, что вам не нужны отрицательные числа (обычно потому, что значения, которые вы храните, никогда не будут отрицательными).
Я не согласен с vipin cp.
правда, первый бит используется для представления знака. Но 1 для отрицательного и 0 для положительных значений. Более отрицательные значения кодируются по-разному (дополнение двух). Пример с 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
одну вещь я хотел бы добавить В
signed int
, который являетсяdefault value in mysql
,1 bit
будет использоваться для представленияsign
.-1 for negative and 0 for positive.
Поэтому, если ваше приложение вставляет только положительное значение, лучше указать unsigned.
Если вы знаете тип чисел, которые вы собираетесь хранить, ваш может выбрать соответственно. В этом случае у вас есть "id", который никогда не может быть отрицательным. Таким образом, вы можете использовать unsigned int. Диапазон подписанного int: -n / 2 до +n / 2 Диапазон беззнаковых int: от 0 до n Таким образом, у вас есть в два раза больше положительных чисел. Выбирайте соответственно.