REFERENCES parent_TABLE (column1, column2, … column_n));

Добавление вторичного ключа с помощью конструкции ALTER TABLE:

ALTER TABLE TABLE_NAME

ADD CONSTRAINT constraINt_NAME

FOREIGN KEY (column1, column2, … column_n)

REFERENCES parent_TABLE (column1, column2, … column_n);

Важные замечания

Первичный ключ может состоять из одной или нескольких колонок.

Пример:

ALTER TABLE TABLE_NAME ADD CONSTRAINT constraINt_NAME PRIMARY KEY (column1);

или же

ALTER TABLE TABLE_NAME ADD CONSTRAINT constraINt_NAME PRIMARY KEY (column1, columnN);

Вопросы учеников

Обязательно ли обозначать внешний ключ? Почему это не будет работать просто так?

Будет работать, но для поддержания ссылочной целостности необходимо использование конструкций SQL для первичных и вторичных ключей.

Контрольные вопросы и задания для самостоятельного выполнения

1. Повторите материалы данного шага.
2. Поясните, в чем отличие первичного и вторичного ключей.

Шаг 9. Ограничения

Введение

Для колонок таблицы в базе данных можно создавать ограничения.

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

То есть ограничения допускают вставку в ячейку таблицы только определенных данных, ограниченных заданными правилами.

Теория и практика

Все ограничения, которые используются в 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.