Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: NULL (YES/NO)
 
 автор: AVS   (05.05.2008 в 00:02)   письмо автору
 
 

При создании новой колонки таблицы, надо указывать NULL = YES или NO. А зачем это? Что дает NULL? Нужен он или нет?

   
 
 автор: Axxil   (05.05.2008 в 00:10)   письмо автору
 
   для: AVS   (05.05.2008 в 00:02)
 

По умолчанию практически всегда NULL = YES.

Т.е. таким образом указывается разрешено ли в данном столбце таблицы полям не иметь значений. Если указать NULL = NO, то нужно также обязательно указать значение поля по умолчанию.

   
 
 автор: AVS   (05.05.2008 в 00:30)   письмо автору
 
   для: Axxil   (05.05.2008 в 00:10)
 

А если значение по умолчанию стоит NULL, то при попытке вставить значение в виде пустой строки (если там действительно должно быть пусто) появляется ошибка, что якобы некорректное значение. Получается надо в запросе на вставку вместо '' указывать NULL если default=NULL, а если default отличен от NULL тогда можно указать '' если надо вставить пустое значение (или значение по умолчанию)?

   
 
 автор: Atheist   (05.05.2008 в 01:03)   письмо автору
 
   для: AVS   (05.05.2008 в 00:30)
 

Нет, это не из той оперы.

В данном случае это означает, что поле может иметь спец. значение NULL. Это влияет на результат агрегирующих функций. Обычно по умолчанию ставят NOT NULL.

   
 
 автор: AVS   (05.05.2008 в 07:35)   письмо автору
 
   для: Atheist   (05.05.2008 в 01:03)
 

Какие особенности при вставке данных в поле, которое по умолчанию NULL, надо учитывать? Так как уже я упоминал ситиацию: "если значение по умолчанию стоит NULL, то при попытке вставить значение в виде пустой строки (если там действительно должно быть пусто) появляется ошибка, что якобы некорректное значение."

   
 
 автор: Atheist   (05.05.2008 в 13:58)   письмо автору
 
   для: AVS   (05.05.2008 в 07:35)
 

> Какие особенности при вставке данных в поле, которое по умолчанию NULL, надо учитывать?
Никаких особенностей нет. Если нужно вставить NULL, то так и пиши: INSERT INTO `tbl` VALUES(..., NULL, ...);
Нужно обычное - INSERT INTO `tbl` VALUES(..., 'string value', ...);

> если значение по умолчанию стоит NULL, то при попытке вставить значение в виде пустой строки (если там действительно должно быть пусто) появляется ошибка, что якобы некорректное значение
Я уже говорил - это из другой оперы. Очевидно, ты ситуацию с включенном режимом NO_AUTO_VALUE_ON_ZERO, когда для поля с AUTO_INCREMENT нельзя писать INSERT INTO `tbl` VALUES(0, ...), ибо возможна ситуация, когда 0 используется в качестве одного из идентификатов. Но это, как и написано в мануале, не рекомендуется.

   
 
 автор: AVS   (05.05.2008 в 16:30)   письмо автору
 
   для: Atheist   (05.05.2008 в 13:58)
 

Спасибо, помогли разобраться.

Прочитал про NULL здесь: http://www.mysql.ru/docs/man/Problems_with_NULL.html

Не так давно я пытался создать столбец типа TEXT и в качестве значения по умолчанию задать пустую строку (default '' ), но MySQL выдала ошибку, что невозможно задать этому столбцу значение по умолчанию. Я так понял что в таком случае при запросе INSERT всегда придется вручную прописывать '' для всех строк, если надо вставить пустую строку. Так ли это?

   
 
 автор: Atheist   (05.05.2008 в 16:44)   письмо автору
 
   для: AVS   (05.05.2008 в 16:30)
 

> Я так понял что в таком случае при запросе INSERT всегда придется вручную прописывать '' для всех строк, если надо вставить пустую строку
Не обязательно. Например, если вставка происходит таким запросом: INSERT INTO `tbl` SET `field1` = 1, `field2` = 'string', ...
То можно и не указывать для полей с типом TEXT какое-то значение. При выборке будет возвращаться пустая строка.
Другое дело, что нельзя присвоить прооизвольное значение по умолчанию для типа TEXT, то есть оно есть (''), но поменять на что-то вроде 'abc' не выйдет.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования