1 ...8 9 10 12 13 14 ...83
Все ограничения, которые используются в ORACLE SQL, можно разделить на следующие группы:
1. Ограничения на вставку пустых значений NOT NULL
Подобный вид ограничений создается, чтобы огранить вставку пустых значений в базу данных.
Снять данное ограничение можно с помощью команды изменения поля таблицы MODIFY.
Синтаксис
Добавлять ограничения на вставку пустых значений можно при создании таблицы.
CREATE TABLE TABLENAME (
Column1 NOT NULL, ColumnN NOT NULL
);
Это стандартный синтаксис создания таблицы, к имени колонки добавляется синтаксис ограничения NOT NULL.
Или изменять значения для уже готовой таблицы с помощью команды ALTER TABLE.
ALTER TABLE TABLENAME MODIFY ColumnName NOT NULL
Примеры
Создание таблицы «Корзина» с ограничением на вставку пустых значений в колонки itemNAME, itemCOUNT.
CREATE TABLE shopINgcart (
article VARCHAR2 (50) PRIMARY KEY
,itemNAME VARCHAR2 (50) NOT NULL
,itemCOUNT NUMBER NOT NULL
);
Запрет добавления пустого значения в FirstName в таблицу MAN.
ALTER TABLE MAN MODIFY FirstName NOT NULL
Запрет добавления пустого значения в LAStName.
ALTER TABLE MAN MODIFY LAStName NOT NULL
То есть значение в колонке LAStName MAN обязательно должно быть заполнено.
Снимаем ограничение на вставку пустых значений:
ALTER TABLE MAN MODIFY LAStName NULL
После выполнения команды значение в колонке LAStName MAN обязательно должно быть заполнено.
Ограничения на уникальность
Данный вид ограничений позволяет указать, что в заданные колонки необходимо добавлять только уникальные неповторяющиеся значения.
Синтаксис
ALTTER TABLE TABLENAME ADD CONSTRAINT cINs_NAME
UNIQUE (columnNAME);
Пример:
ALTTER TABLE CITY ADD CONSTRAINT CITY_uniq
UNIQUE (CITYNAME);
Названия городов, только уникальные значения.
Ограничения на вторичный ключ
Подобный вид ограничений мы уже рассматривали, когда изучали первичные и вторичные ключи. Смысл данного ограничения в том, что в колонке некоторой таблицы (вторичный ключ) могут находится только значения, которые есть в другой, основной таблице в колонке первичного ключа.
Синтаксис
ALTER TABLE for_TABLE
ADD CONSTRAINT fk_const_NAME
FOREIGN KEY (fk_column)
REFERENCES primary_talbe (pk_column);
Здесь for_TABLE, fk_column — таблица, колонка, куда устанавливается ограничение. Проверка значений происходит в таблице primary_talbe и колонке pk_column.
Пример
Здесь для таблицы MAN колонки CITYCODE устанавливается ссылочное ограничение по колонке CITYCODE с таблицей CITY, где CITY является главной таблицей.
ALTER TABLE MAN
ADD CONSTRAINT fk_MAN_CITY_CODE
FOREIGN KEY (CITYCODE)
REFERENCES CITY (CITYCODE);
Ограничение CHECK на вставку и изменение данных
— вычитание;
Синтаксис
ALTER TABLE TABLENAME ADD CONSTRAINT CHECK_NAME
CHECK (condition);
Здесь condition — условие, CHECK_NAME — наименование ограничения, TABLENAME — имя таблицы.
Пример
Ограничение в таблице MAN на возраст (YEAROLD) больше 16 лет:
ALTER TABLE MAN ADD CONSTRAINT CHECK_YEAROLD_MAN
CHECK (YEAROLD> 16);
Ограничение уникальности можно также создавать для нескольких колонок таблицы, это делается следующим образом:
ALTTER TABLE CITY ADD CONSTRAINT CITY_uniq
UNIQUE (CITYNAME, CITYCODE);
При этом отдельно необходимо контролировать вставку пустых значений для соответствующих полей таблицы.
Существуют дополнительные опции для создания ограничений ссылочной целостности:
• On delete cAScade — автоматическое удаление связанных строк по внешнему ключу;
• On delete NULL — значение внешнего ключа устанавливается в NULL.
При создании множества ограничений CHECK необходимо, чтобы между ними не было конфликтов, то есть чтобы правила не противоречили друг другу.
Условие в ограничении CHECK может ссылаться на любой столбец таблицы, но не может ссылаться на столбцы другой таблицы.
Чем ограничение на уникальность UNIQUE отличается от первичного ключа (Primary KEY)?
Первичный ключ в таблице может быть только один, ограничений на уникальность может быть много. В таблице в поле с ограничением уникальности допускается вставка пустых значений. Также для первичного ключа создается специальный индекс (pk).
Если колонка в таблице содержит пустые значения, а мы добавляем к этой колонке ограничение NOT NULL, что произойдет?
Вы получите сообщение об ошибке, и ограничение не будет добавлено.
Читать дальше
Конец ознакомительного отрывка
Купить книгу