НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

SQL Підручник

SQL СТАРТ SQL Інтро SQL Синтаксис SQL SELECT SQL SELECT DISTINCT SQL WHERE SQL ORDER BY SQL AND SQL OR SQL NOT SQL INSERT INTO SQL NULL SQL UPDATE SQL DELETE SQL SELECT TOP SQL MIN() and MAX() SQL COUNT() SQL SUM() SQL AVG() SQL LIKE SQL Підстановочні символи SQL IN SQL BETWEEN SQL Псевдоніми SQL JOIN SQL INNER JOIN SQL LEFT JOIN SQL RIGHT JOIN SQL FULL OUTER JOIN SQL Self 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 Оператори

SQL База даних

SQL Create DB SQL Drop DB SQL Backup DB SQL Create Table SQL Drop Table SQL Alter Table SQL Constraints SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key SQL Check SQL Default SQL Index SQL Auto Increment SQL Dates SQL Views SQL Injection SQL Hosting SQL Типи даних

SQL Довідники

SQL Ключові слова MySQL Функції SQL Серверні функції MS Access Функції SQL Швидкий довідник

SQL Приклади

SQL Приклади SQL Редактор SQL Вікторина SQL Вправи SQL Bootcamp SQL Сертифікат

SQL. W3Schools українською. Уроки для початківців

En

SQL FOREIGN KEY Обмеження


SQL Обмеження FOREIGN KEY

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

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" у таблиці "Orders" є FOREIGN KEY у таблиці "Orders".

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


SQL FOREIGN KEY на CREATE TABLE

Наступний SQL створює FOREIGN KEY у стовпці "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)
);

Щоб дозволити іменування обмеження 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 FOREIGN KEY на ALTER TABLE

Щоб створити обмеження FOREIGN KEY для стовпця "PersonID" коли таблицю "Orders" уже створено, використовуйте такий 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 обмеження

Щоб видалити обмеження FOREIGN KEY використовуйте такий SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;