Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М. ГРУБЕР_SQL.doc
Скачиваний:
22
Добавлен:
18.04.2019
Размер:
1.4 Mб
Скачать

Ограничение таблиц

Когда вы создаете таблицу (или, когда вы ее изменяете), вы можете помещать ограничение на значения, которые могут быть введены в поля. Если вы это сделали, SQL будет отклонять любые значения, которые нарушают критерии, которые вы определили. Имеется два основных типа ограничений — ограничение столбца и ограничение таблицы. Различие между ними в том, что ограничение столбца применяется только к индивидуальным столбцам, в то время как ограничение таблицы применяется к группам из одного и более столбцов.

Объявление ограничений

Вы вставляете ограничение столбца в конец имени столбца после типа данных и перед запятой. Ограничение таблицы помещаются в конец имени таблицы после последнего имени столбца, но перед закрывающей круглой скобкой. Далее показан синтаксис для команды CREATE TABLE, расширенной для включения в нее ограничения:

CREATE TABLE <table name> (<column name> <data type> <column constraint>, <column name> <data type> <column constraint> ... <table constraint> (<column name> [, <column name> ])...);

Для краткости мы опустили аргумент размера, который иногда используется с типом данных. Поля, данные в круглых скобках после ограничения таблицы — это поля к которым применено это ограничение. Ограничение столбца, естественно, применяется к столбцу, после имени столбца, за которым оно следует. Остальная часть этой глава будет описывать различные типы ограничений и их использование.

Использование ограничений для исключения пустых (null) указателей

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

Вы можете вспомнить, что NULL — это специальное обозначение, которое отмечает поле как пустое. Значения NULL могут быть полезны в случае, когда вы хотите быть от них гарантированы. Очевидно, что первичные ключи никогда не должны быть пустыми, поскольку это будет подрывать их функциональные возможности. Кроме того, такие поля, как имена, требуют в большинстве случаев определенных значений. Например, вы, вероятно, захотите иметь имя для каждого заказчика в таблице Заказчиков. Если вы поместите ключевые слова NOT NULL сразу после типа данных (включая размер) столбца, любая попытка поместить значение NULL в это поле будет отклонена. В противном случае SQL понимает, что NULL разрешен.

Например, давайте улучшим наше определение таблицы Продавцов, не позволяя помещать NULL значения в столбцы snum или sname:

CREATE TABLE Salespeople ( Snum integer NOT NULL, Sname char (10) NOT NULL, city char (10), comm decimal);

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

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