Наверно этот вопрос может показаться смешным или глупым, НО.
Никак не могу сообразить, зачем в MySQl нужен NULL по умолчанию? В каких случаях его ставить?
Я так понял его ставят в тех случаях, когда поле может быть пустым в некоторых записях. Это так?
Почему тогда не оставить просто пустое значение? Зачем NULL? Он дает какие-то преимущества?
И если числовое поле, то почему просто не поставить по умолчанию 0, в чем разница?
Для числового поля разница в том, что 0 может быть результатом арифметической операции, в то время как NULL говорит о том, что значение просто не было указано.
Аналогично - для пустой строки и других типов данных.
NULL как свойство поля читается как NULLABLE - т.е. значение для данного столбца необязательно для указания.
Ayk72 Я дал не совсем корректный ответ:
NULL - это тоже значение. Оно означает НИЧЕГО. Но такое значение могут иметь только те поля, которые Вы промаркируете как NULLABLE, т.е. как поля, которые могут содержать НИЧЕГО.
Насчет оптимизации я сам напрямую не сталкивался, но читал, что стоит избегать большого количества NULLABLE полей в БД, т.к. NULLABLE занимает большее количество памяти на жестком диске.
Но, думаю, что для небольших проектов это не критично.
Ну, попробуйте установить "нулевое значение" для даты или логического поля.
Внезапно, это будет 1970-01-01 и false, а не какое-то "отсутствие значения".
Кроме того, NULL - это значение поля при LEFT JOIN в случае, если во второй таблице не нашлось подходящей строки. Опять-таки - не нулевое значение, а его отсутствие.