Що означає "без підпису" в MySQL і коли його використовувати?


278

Що означає "неподписаний" в MySQL і коли я повинен його використовувати?

Відповіді:


527

MySQL говорить:

Усі цілі типи можуть мати необов'язковий (нестандартний) атрибут UNSIGNED. Непідписаний тип може використовуватися для дозволу лише невід'ємних чисел у стовпці або коли вам потрібен більший верхній числовий діапазон для стовпця. Наприклад, якщо колонка INT не визначена, розмір діапазону стовпця однаковий, але його кінцеві точки зміщуються від -2147483648 та 2147483647 до 0 та 4294967295.

Коли я ним користуюся?

Задайте собі це запитання: чи буде це поле коли-небудь містити негативне значення ?
Якщо відповідь "ні", вам потрібно UNSIGNEDтип даних.

Поширена помилка полягає у використанні первинного ключа, який є автоматичним збільшенням, INTпочинаючи з нуля , але тип - SIGNEDу такому випадку ви ніколи не торкаєтесь жодного від’ємного числа, і ви скорочуєте діапазон можливих ідентифікаторів до половини.


8
Значення, що представляють "розміри" речей, наприклад, кількість певного товару в замовленні або відстань між двома місцями, зазвичай не
підписуються

31
Чудова відповідь, здається дивним, що mysql не встановив би за замовчуванням цілі числа без підпису, коли вони автоматично збільшують ідентичності?
wired00

3
Якщо ви хочете більш ясну відповідь , то дивіться цей stackoverflow.com/a/11515613/6335029
NaveenDA

Мені дуже хочеться, щоб був також positiveатрибут, оскільки, здається, ще більш поширеним є те, що ви хочете працювати лише з позитивними нульовими числами.
still_dreaming_1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.