Что означает "Allow Null"
и что он делает?
Mysql: Разрешить нулевое значение
Ответ 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 означает "отсутствующий неизвестное значение" и обрабатывается несколько иначе, чем другие значения.