УСТАНОВКА ЗНАЧЕНИЙ ПО УМОЛЧАНИЮ
Когда вы вставляете строку в таблицу без указания значений в ней для каждого поля, SQL должен
иметь
значение по умолчанию для включения его в определенное поле, или же команда будет отклонена.
Наиболее общим
значением по умолчанию является - NULL. Это - значение по умолчанию для любого столбца,
которому не было дано
ограничение NOT NULL или который имел другое назначение по умолчанию. Значение DEFAULT(ПО
УМОЛЧАНИЮ)
указывается в команде CREATE TABLE тем же способом что и ограничение столбца, хотя, с
технической точки зрения,
значение DEFAULT не ограничительного свойства - оно не ограничивает значения которые вы
можете вводить, а просто
определяет, что может случиться если вы не введете любое из них. Предположим что вы работаете
в оффисе Нью Йорка и
подавляющее большинство ваших продавцов живут в Нью Йорке. Вы можете указать Нью Йорк в
качестве значения поля city,
по умолчанию, для вашей таблицы Продавцов:
CREATE TABLE Salespeople ( snum integer NOT NULL UNIQUE, sname char(10)
NOT NULL UNIQUE, city char(10) DEFAULT = 'New York', comm decimal CHECK (comm < 1);
Конечно, вводить значение Нью
Йорк в таблицу каждый раз когда назначается новый продавец, не такая уж необходимость, и
можно просто пренебречь
им ( не вводя его ) даже если оно должно иметь некоторое значение. Значение по умолчанию
такого типа, более
предпочтительно, чем, например, длинный конторский номер указывающий на ваше собственное
ведомство, в таблице
Порядков. Длинные числовые значения - более расположены к ошибке, поэтому если подавляющее
большинство ( или все )
ваших порядков должны иметь ваш собственный конторский номер, желательно устанавливать для
них значение по
умолчанию. Другой способ использовать значение по умолчанию - это использовать его как
альтернативу для NULL. Так как
NULL (фактически) неверен при любом сравнении, ином чем IS NULL, он может быть исключен с
помощью большинства
предикатов. Иногда, вам нужно видеть пустые значения ваших полей не обрабатывая их каким-то
определенным образом.
Вы можете установить значение по умолчанию, типа нуль или пробел, которые функционально
меньше по значению чем
просто не установленное значение - пустое значение(NULL). Различие между ними и обычным NULL
в том, что SQL будет
обрабатывать их также как и любое другое значение. Предположим, что заказчикам не назначены
оценки изначально.
Каждые шесть месяцев, вы повышаете оценку всем вашим заказчикам, имеющим оценку ниже средней,
включая и тех кто
предварительно не имел никакого назначения оценки. Если вы хотите выбрать всех этих
заказчиков как группу, следующий
запрос исключит всех заказчиков с оценкой = NULL:
SELECT * FROM Customers WHERE rating < = 100;
Однако, если вы
назначили значение поумолчанию = 000, в поле rating, заказчики без оценок будут выбраны
наряду с другими. Приоритет
каждого метода - зависит от ситуации. Если вы будете делать запрос с помощью поля оценки, то
захотите ли Вы включить
строки без значений, или исключите их? Другая характеристика значений по умолчанию этого
типа, позволит обьявить Вам
поле оценки - как NOT NULL. Если вы используете его поумолчанию, чтобы избежать
значений = NULL, то это - вероятно
хорошая защита от ошибок. Вы можете также использовать ограничения UNIQUE или PRIMARY KEY в
этом поле. Если вы
сделаете это, то, имеете в виду, что только одна строка одновременно может иметь значение по
умолчанию. Любую строку
которая содержит значение по умолчанию нужно будет модифицировать прежде, чем другая строка
с установкой по
умолчанию будет вставлена. Это не так как вы обычно используете значения по умолчанию,
поэтому ограничения UNIQUE и
PRIMARY KEY ( особенно последнее ) обычно не устанавливаются для строк со значениями по
умолчанию.