Задавайте вопросы, мы ответим
Вы не зашли.
У меня вопрос, касающийся значений полей, которые надо ставить по умолчанию.
Если просто надо какое-то значение выставить по умолчанию, вроде цифры или строки - это понятно, что данному полю при отсутствии заносимого значения присвоится значение по умолчанию. Но есть возможность выставить значение null и not null. В чём отличие? Как вообще mysql поступает, когда ей требуется получить значение из поля, в котором стоит null? А если я укажу значение поля как null, это уже не будет рассматриваться как текстовая строка с данными?
Единственное, что мне известно, что значение null может каким-то образом повлиять на скорость извлечения данных.
Неактивен
NULL и NOT NULL - свойство типа данных, а не значения по умолчанию.
Например, колонка int NOT NULL может хранить целое число, а колонка int NULL может хранить целое число или NULL. NULL - это специальное значение (не путать со значением 0) и его можно проверять специальной функцией ISNULL()
Неактивен
А могу ли я поставить null для колонки типа text? И в чём тогда смысл этого свойства?
Допустим, я много использую phpmyadmin, где это свойство легко можно выставить. Какие-то есть рекомендации, когда выставлять null, когда not null?
Неактивен
Можете и для колонки типа text. Смысл такой, какой сами будете вкладывать. Для MySQL NULL - это просто спецзначение, которое либо может либо не может храниться в колонке. И конечно NULL не то же самое, что 0, пустая строка или строка "NULL".
Неактивен
sito-corito написал:
И в чём тогда смысл этого свойства?
Такой же как undefined во многих языках программирования, т.е. по сути троичная логика - true, false и undef.
Обычно NULL нет необходимости использовать, но бывает когда и нужно. Например вы вставляете строку в таблицу у которой все значения NOT NULL, после этого вы не можете определить 0 в числовых полях - это пользователь умышленно ввел ноль или оно так оказалось потому что это значение по умолчанию. Если вам нужно различать такие ситуации - то нужно использовать поля, допускающие NULL.
У меня на практике ситуаций, когда реально нужен NULL - ~5-10%. Во всех остальных случаях нужно экономить ресурсы и декларировать поля как NOT NULL.
Неактивен
Shopen написал:
У меня на практике ситуаций, когда реально нужен NULL - ~5-10%. Во всех остальных случаях нужно экономить ресурсы и декларировать поля как NOT NULL.
А как при этом экономятся ресурсы?
Неактивен
См. обсуждение http://webew.ru/posts/1110.webew
Каждое поле, которое может быть NULL отнимает 1 бит в заголовке каждой записи в таблице. Обычно экономия на хранении данных незначительная. Дополнительная экономия при обработке - NULL требует анализа при каждой выборке (хотя анализ простой побитовый) и NULL несколько усложняет структуру индекса (добавляется указатель на список NULL-записей).
Неактивен
Не очень понятно %\ про этот ноль, который и не ноль вовсе.
Но и на том спасибо
Неактивен
NULL в mysql означает "неизвестно", т.е. считается, что значение поля не определено. И этот "ноль, который и не ноль вовсе" на самом деле очень важен и нужен, т.к если вы вводите в таблицу запись, где вы пока не знаете, что должно быть в одном из полей, вы оставляете там значение NULL, т.е. неизвестное значение. Если mysql выводит поле, где стоит null, то в выводе он так и запишет:NULL. Смысл для типа text тот же.
Неактивен