вместо пустых значений по умолчанию
Есть у вас поле
id с типом
int. Что должно быть в качестве пустого значения?
Есть у вас поле
name с типом
varchar. Что должно быть в качестве пустого значения?
NULL как универсальное значение, указывающее что в поле ничего не записано.
При проектировании БД мы можем поле сделать nullable, а можем просто назначить ему по умолчанию '', 0, '[]', и т.д., по контексту.
Представим ситуацию, что у нас есть в бд поле-флаг, который указывает что мы хотим получать рассылку новостей с сайта. Если по-умолчанию будет 0, то пользователь отказался. Если 1, то согласился.
А если NULL, то пользователь ещё не определился с выбором и мы при каждом посещении сайта будем его спрашивать не хочет ли он подписаться на рассылку, пока он не выберет 0 или 1.