Mysql: Разрешить нулевое значение

Что означает "Allow Null" и что он делает?

Ответы

Ответ 1

Чтобы понять, что означает "Разрешить Null" , вам нужно понять, что такое NULL, и понять, что он отличается от простой или пустой строки.

NULL - специальное значение в SQL. Он указывает данные, которые не существуют. Это отличается от данных, которые пусты.

Когда вы создаете таблицу в MySQL, она позволяет указать, разрешено ли вашим полям NULL. Если вы укажете "Разрешить Null" , тогда в этих полях можно будет создавать записи с NULL значениями.

Это может быть полезно вам в некоторых случаях. Например, поле "Да/Нет" может быть логическим значением, но если пользователь не указал их предпочтения, вы можете установить значение NULL, чтобы указать это, а не на "да" или "нет".

Во многих случаях разрешение NULL может быть проблематичным. Поля, установленные на NULL, могут создавать неожиданные результаты в запросах, поскольку NULL не соответствует тем же правилам, что и другие значения во всех случаях. например: если вы запрашиваете приведенное выше поле примера WHERE myfield != 1, вы можете ожидать получить результаты для всех записей, которые не равны 1. Однако поля NULL не будут возвращены; вам нужно написать для них специальный случай.

NULL также используется как значение по умолчанию при выполнении JOIN запросов, в которых некоторые из результатов не имеют записи для присоединения. Неизвестные поля из объединенной таблицы будут установлены на NULL.

В общем случае, если вы не знаете, что делать с "Разрешить Null" , самым безопасным вариантом является его отсутствие для нулевых значений.

Для получения дополнительной информации см. запись в Wikipedia для NULL в SQL.

Надеюсь, что это поможет.

Ответ 2

Разрешить Null означает, что при изменении или вставке данных вам не нужно заполнять эти данные. Не обязательно.

Ответ 3

В сущности, если вы разрешаете нулевое значение, вы говорите, что указанное поле может содержать законное значение (например: 2011-04-02, если это была дата), а также "NULL" (или "no значение" ).

Таким образом, если вы представляете ситуацию, когда поле было обязательным, оно всегда должно быть обозначено как NOT NULL в объявлении схемы, тогда как необязательное поле может быть оставлено как есть.

Для получения дополнительной информации ознакомьтесь с разделом Работа с NULL значения в руководстве MySQL, которое (среди прочего) аккуратно суммирует такие вещи:

Концептуально, NULL означает "отсутствующий неизвестное значение" и обрабатывается несколько иначе, чем другие значения.