САМОСТОЯТЕЛЬНОЕ ОБУЧЕНИЕ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ

SQL Учебник

SQL Главная SQL Введение SQL Синтаксис SQL SELECT SQL SELECT DISTINCT SQL WHERE SQL AND, OR, NOT SQL ORDER BY SQL INSERT INTO SQL Null SQL UPDATE SQL DELETE SQL SELECT TOP SQL MIN() и MAX() SQL COUNT(), AVG() и ... SQL LIKE SQL Подстановочный SQL IN SQL BETWEEN SQL Псевдонимы SQL JOIN SQL JOIN Внутри SQL JOIN Слева SQL JOIN Справа SQL JOIN Полное SQL JOIN Сам SQL UNION SQL GROUP BY SQL HAVING SQL Exists SQL Any, All SQL SELECT INTO SQL INSERT INTO SELECT SQL CASE SQL NULL SQL Хранимая SQL Комментарии SQL Operators

SQL База данных

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

SQL Справочник

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

SQL Примеры

SQL Примеры SQL Викторина SQL Упражнения SQL Сертификат

SQL FOREIGN KEY



FOREIGN KEY

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

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

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

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

Таблица "Persons":

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

Таблица "Orders":

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

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

Столбец "PersonID" в таблице "Persons" является первичным ключом в таблице "Persons".

Столбец "PersonID" в таблице "Orders" является внешним ключом в таблице "Orders".

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

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



FOREIGN KEY в CREATE TABLE

Следующий SQL создает внешний ключ в столбце "PersonID" при создании таблицы "Orders":

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)
);

Чтобы разрешить именование ограничения внешнего ключа и определить ограничение внешнего ключа для нескольких столбцов, используйте следующий синтаксис 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)
);

FOREIGN KEY в ALTER TABLE

Чтобы создать ограничение внешнего ключа для столбца "PersonID", когда таблица "Orders" уже создана, используйте следующий SQL:

MySQL / SQL Server / Oracle / MS Access:

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

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

MySQL / SQL Server / Oracle / MS Access:

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

Ограничение FOREIGN KEY с DROP

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

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;