Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2010, 01:30   #1
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию not null в запросе в коде пхп

Какой смысл при создании таблицы в базе данных, например вот такой:

Код:
create table yra(id int(5), samolyot varchar(10), tata varchar(50) not null, primary key(id));
Какую роль играет not null при добавлении информации в базу данных через форму сайта?
Golovastik вне форума Ответить с цитированием
Старый 17.07.2010, 02:02   #2
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию

Видимо может ли быть это поле пустым null при добавление новой записи в БД, или его нужно обязательно заполнять not null.
slips вне форума Ответить с цитированием
Старый 17.07.2010, 03:17   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

not null обязывает каждому полю присваивать некое значение. Если поле помечено как null, то его индексация и поиск по этому полю происходит несколько медленнее, чем по полям с меткой not null. Таким образом выгоднее всем полям где это возможно (а имеено любой тип поля кроме text и blob) задавать метку not null и сразу задавать значение по умолчанию (0 - для чисел, "" - для строк и т.д.) Это немного ускоряет работу БД с этими полями.

это если в общих чертах.

З.Ы. Также считается плохим тоном делать индексацию полей с меткой null. Ну это среди профессиональных программеров.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 17.07.2010, 16:11   #4
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Но если я даже ничего не заполню на форме сайта и нажму клавишу "ЕНТЕР" или кнопку, в базу данных просто добавится пустая строка, с номером ид, видите всё арвно заполняется пустотой и доьбавляется и на not null не реагирует.
Golovastik вне форума Ответить с цитированием
Старый 17.07.2010, 16:44   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
в базу данных просто добавится пустая строка, с номером ид, видите всё арвно заполняется пустотой и доьбавляется и на not null не реагирует.
Golovastik, Вы просто не понимаете, что такое null! Это ПУСТОТА! Это не пустая строчка. Это не полная строчка! Это просто ОТСУТСТВИЕ какой либо величины.
Объснять это долго (да, возможно и не нужно). Просто примите во внимание, что с полями, которые могут быть null нужно быть чрезвычайно осторожным при программировании.

покажу на одном маленьком примере.
Пусть есть поле samolyot. Оно может быть null
Добавляете запись в таблицу:
Код:
insert into `yra` (id, tata) values (NewId, 'Красота')
после этого делаете выборку
Код:
select * from `yra` where samolyot = ''
запись с текстом в tata Красота - НЕ ВЫБИРАЕТСЯ.

ладно. изменим условие отбора на противоположное:
Код:
select * from `yra` where samolyot <> ''
Ан нет. Дудки. запись с текстом в tata Красота - всё равно НЕ ВЫБИРАЕТСЯ.

и выбрать такую запись можно или совсем убрав условие с полем samolyot, либо используя специальные условия:
Код:
select * from `yra` where samolyot is null
или 
select * from `yra` where samolyot is not null

надеюсь, понятно объяснил...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TParameters. Значение NULL Stilet БД в Delphi 4 13.05.2010 16:45
null + число Dobriak-ru Microsoft Office Access 4 25.03.2010 08:27
пробел и NULL Николай Сергеевич Общие вопросы C/C++ 14 22.12.2009 08:48
Обработка значения Null в sql запросе KeyDok БД в Delphi 6 13.07.2008 12:03
delete where fields=null??? Geddar SQL, базы данных 1 02.06.2008 16:57