Що означає "без підпису" в 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.