Какое значение по умолчанию выбрать для числового поля БД MySQL?

Статус
В этой теме нельзя размещать новые ответы.

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Поле БД MySQL будет хранить числовое значение int(3), если юзером отмечен специальный пункт при заполнении анкеты на сайте.
При создании поля задался вопросом, какое значение по умолчанию будет правильно для незаполненных полей?
При создании поля попробовал оставить По умолчанию "Нет" (работаю в phpmyadmin) и во все незаполненные поля у меня подставились нули.
А какое значение по умолчанию будет правильным в моем случае и почему?
Может быть NULL?
 
Для указания "отсутствия значения" использую NULL
Можно использовать "условности" (вроде 0 или -1), но зачем, если есть специальное значение "NULL"?
 
Все зависит от того как вы выполняете запросы на обновление этой таблицы, если вы используете поумолчанию 0, а true будет 1 или любое другое значение, тогда у вас не будет никаких заморочек с полем. Просто если ваш скрипт затрагивает это поле при обновлении, например в инсерте в это поле пишется '' тогда может возникнуть проблема, а если вы все запросы составляете вручную сами, тогда можно и NULL.
В противном случае вам придется явно в запросах использовать SET поле = NULL
Лично я например более 10 лет по умолчанию для числовых использую 0.
 
В Вашем случае если "юзер" отметил пункт то надо записать "1" если нет "0", логические "true" либо "false". Для этого лучше использовать тип не int(3) который всегда одинаков от -2в31 до +2в31-1 и занимает 4б айта, а BOOL, BOOLEAN хранит 0 либо 1 = 1 байт (синоним TINYINT(1)).
Для просмотра ссылки Войди или Зарегистрируйся
 
Начнем с самого начала: NULL означает, что данные неизвестны. Т.е ни нулевые, а именно неизвестны. Например, если поле обозначает сколько котов живет дома у заполняющего, то 0 означает, что их нету у него. А NULL может означать, что угодно (этих данных у нас не имеется). Поэтому если такое различие важно, то незаполненное поле должно быть NULL. А если необходимы в процессе использования, например, не конкретные значения, а только некие агрегатные (например, максимально количество "котов" или сумма указанных), то тут неважно для нас 0 или NULL, т.к в указанной ситуации для нас это одно и тоже.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху