Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М. ГРУБЕР_SQL.doc
Скачиваний:
23
Добавлен:
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, текущая таблица должна быть пустой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]