Учебник по SQL

SQL ГЛАВНАЯ Введение в SQL Синтаксис SQL Выбор SQL SQL выбрать отдельный SQL Где SQL И, Или, Не Порядок SQL по SQL вставить в Нулевые значения SQL Обновление SQL SQL Удалить SQL выберите вверху SQL Мин. и Макс. Количество SQL, среднее, сумма SQL нравится Подстановочные знаки SQL SQL входящий SQL между Псевдонимы SQL SQL-соединения Внутреннее соединение SQL Левое соединение SQL SQL правое соединение Полное соединение SQL Самостоятельное присоединение SQL Союз SQL Группа SQL по SQL Имея SQL существует SQL Любой, Все SQL выбрать в SQL вставить в выбор SQL-кейс Нулевые функции SQL Хранимые процедуры SQL Комментарии SQL SQL-операторы

База данных SQL

SQL Создать БД БД SQL Drop Резервная копия базы данных SQL Создание таблицы SQL Таблица удаления SQL Таблица изменений SQL Ограничения SQL SQL не нулевой Уникальный SQL Первичный ключ SQL Внешний ключ SQL Проверка SQL SQL по умолчанию Индекс SQL Автоматическое увеличение SQL Даты SQL Представления SQL SQL-инъекция Хостинг SQL Типы данных SQL

Ссылки на SQL

Ключевые слова SQL Функции MySQL Функции SQL-сервера Функции MS Access Краткое руководство по SQL

Примеры SQL

Примеры SQL SQL-викторина SQL-упражнения SQL-сертификат

Ограничение ВНЕШНЕГО КЛЮЧА SQL


Ограничение ВНЕШНЕГО КЛЮЧА SQL

Ограничение FOREIGN KEYиспользуется для предотвращения действий, которые могут разрушить связи между таблицами.

A FOREIGN KEY— это поле (или набор полей) в одной таблице, которое ссылается на поле PRIMARY KEYв другой таблице.

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

Посмотрите на следующие две таблицы:

Стол лиц

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

Таблица заказов

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

Обратите внимание, что столбец «PersonID» в таблице «Orders» указывает на столбец «PersonID» в таблице «Persons».

Столбец «PersonID» в таблице «Persons» совпадает с таблицей PRIMARY KEY«Persons».

Столбец «PersonID» в таблице «Заказы» находится FOREIGN KEYв таблице «Заказы».

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



ВНЕШНИЙ КЛЮЧ SQL при СОЗДАНИИ ТАБЛИЦЫ

Следующий SQL создает FOREIGN KEYстолбец «PersonID» при создании таблицы «Заказы»:

MySQL:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

SQL Server/Oracle/MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

Чтобы разрешить именование FOREIGN KEYограничения и определить FOREIGN KEYограничение для нескольких столбцов, используйте следующий синтаксис SQL:

MySQL/SQL Server/Oracle/MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

ВНЕШНИЙ КЛЮЧ SQL на ALTER TABLE

Чтобы создать FOREIGN KEYограничение для столбца «PersonID», когда таблица «Заказы» уже создана, используйте следующий SQL:

MySQL/SQL Server/Oracle/MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Чтобы разрешить именование FOREIGN KEYограничения и определить FOREIGN KEYограничение для нескольких столбцов, используйте следующий синтаксис SQL:

MySQL/SQL Server/Oracle/MS Access:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

УДАЛИТЬ ВНЕШНИЙ КЛЮЧ Ограничение

Чтобы удалить FOREIGN KEYограничение, используйте следующий SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server/Oracle/MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;