Реляционная база данных позволяет объединить многочисленные данные в одну таблицу и при помощи SQL-запросов проводить над ней различные манипуляции, получая результат в виде чисел и строк, а также новых таблиц. При создании таблицы неизбежны случаи, когда информации недостаточно и для части данных нельзя определить, какое значение они примут. Такие данные обозначаются специальным типом — NULL.
Например, в форме регистрации пользователь обязательно должен указать фамилию, имя, отчество. Кроме того, по желанию он может указать свой e-mail и URL домашней страницы.
Комментарий в SQL начинается с двух дефисов "—", все что расположено правее, считается комментарием. Непосредственно после "-" должен следовать пробел. Помимо стандартного комментария, MySQL содержит ряд собственных комментариев. Shell-комментарий # действует аналогично "—", все что расположено правее его, является текстом комментария. С-комментарий /* */ является многострочным — комментарий начинается с "/*" и заканчивается только тогда, когда встретится завершение "*/".
Посетитель обязан указать свои фамилию, имя и отчество, но может не указывать e-mail и адрес домашней страницы, даже несмотря на то, что они у него имеются в наличии. Таким образом, если для полей email и url нет информации, это не значит, что ее нет в природе, просто на данный момент она неизвестна. Такие поля принимают значение null — отсутствие информации, т. е. неопределенное значение. Выполнение арифметических операций с данными типа null всегда дает null, передача null в качестве аргумента функции также всегда приводит к значению типа null. Любые действия, производимые над неопределенным значением, приводят опять к неопределенному значению.
Для указания того факта, что поле может принимать значение null, в определении столбца, после типа данных следует указать ключевое слово null, если поле ни при каких обстоятельствах не должно принимать поле null (регистрация невозможна, если фамилия пользователя неизвестна), следует указать ключевое слово not null
Атрибут not null можно не указывать, т. к. он присваивается столбцу по умолчанию, если никакой из атрибутов не указан.
Совместно с атрибутами NOT NULL и NULL можно использовать DEFAULT, который имеет больший приоритет.
При выборе типа данных следует помнить, что обработка числовых данных происходит быстрее строковых. Так как типы данных ENUM и SET имеют внутреннее числовое -представление, им следует отдавать предпочтение перед другими видами строковых данных, если предоставляется такая возможность.
Производительность можно увеличить за счет представления строк в виде чисел. Примером может служить преобразование IP-адреса из строковой нотации в BIGINT.
Это позволит уменьшить размер таблицы и значительно увеличить скорость при сортировке и выборке данных, но потребует дополнительных преобразований.
Не следует забывать, что базы данных хранятся на жестком диске, и чем меньше места они занимают, тем быстрее происходит поиск и извлечение. Поэтому, там где есть возможность, предпочтение следует отдавать типам данных, занимающих меньше места.
Типы фиксированной длины обрабатываются быстрее типов переменной длины, т.к. в последнем случае при частых удалениях и модификациях таблицы происходит ее фрагментация.