ЗОВНІШНИЙ КЛЮЧ SQL: як створити на SQL Server із прикладом
Що таке ЗОВНІШНІЙ КЛЮЧ?
A Зовнішній ключ забезпечує спосіб забезпечення посилальної цілісності в SQL Server. Простими словами, зовнішній ключ гарантує, що значення в одній таблиці повинні бути присутніми в іншій таблиці.
Правила для FOREIGN KEY
- У зовнішньому ключі SQL допускається значення NULL.
- Таблиця, на яку посилаються, називається батьківською таблицею
- Таблиця із зовнішнім ключем у SQL називається дочірньою таблицею.
- Зовнішній ключ SQL у дочірній таблиці посилається на первинний ключ у батьківській таблиці.
- Ці стосунки «батьки-нащадки» забезпечують виконання правила, відомого як «посилання Integrity».
Наведений нижче приклад зовнішнього ключа в SQL із діаграмою підсумовує всі наведені вище пункти для FOREIGN KEY

Як створити FOREIGN KEY в SQL
Ми можемо створити a Зовнішній ключ на сервері SQL в 2 способи:
- SQL Server Management Studio
- T-SQL
SQL Server Management Studio
Батьківська таблиця: Скажімо, ми маємо існуючу батьківську таблицю як «Курс». Course_ID і Course_name — це два стовпці з Course_Id як первинним ключем.
Дочірня таблиця: Нам потрібно створити другу таблицю як дочірню. «Course_ID» і «Course_Strength» як два стовпці. Однак «Course_ID» має бути зовнішнім ключем.
Крок 1) Клацніть правою кнопкою миші Таблиці>Створити> Таблиця…
Крок 2) Введіть назву двох стовпців як «Course_ID» і «Course_Strength». Клацніть правою кнопкою миші на стовпці "Course_Id". Тепер натисніть «Відносини».
Крок 3) In «Іноземні ключові відносини,' Натисніть 'Додати'
Крок 4) У розділі «Специфікація таблиць і стовпців» натисніть значок «…».
Крок 5) Виберіть «Таблиця первинного ключа» як «КУРС», а нову таблицю, яка зараз створюється, як «Таблицю зовнішнього ключа» зі спадного меню.
Крок 6) «Таблиця первинного ключа» – виберіть стовпець «Course_Id» як стовпець «Таблиця первинного ключа».
«Таблиця іноземних ключів» - виберіть стовпець «Course_Id» як стовпець «Таблиця іноземних ключів». Натисніть OK.
Крок 7) Натисніть Додати.
Крок 8) Назвіть таблицю «Course_Strength» і натисніть ОК.
Результат: Ми встановили відносини «батько-дитина». "Курс" та 'Course_strength.'
T-SQL: створіть таблицю Parent-child за допомогою T-SQL
Батьківська таблиця: Подумайте ще раз, у нас є існуюча батьківська таблиця з назвою таблиці як «Курс».
Course_ID і Course_name — це два стовпці з Course_Id як первинним ключем.
Дочірня таблиця: Нам потрібно створити другу таблицю як дочірню таблицю з назвою «Course_Strength_TSQL».
'Course_ID' і 'Course_Strength' як два стовпці для дочірньої таблиці Course_Strength_TSQL.' Однак «Course_ID» має бути зовнішнім ключем.
Нижче наведено синтаксис для створення таблиці з FOREIGN KEY
Синтаксис:
CREATE TABLE childTable ( column_1 datatype [ NULL |NOT NULL ], column_2 datatype [ NULL |NOT NULL ], ... CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n) [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] );
Ось опис наведених вище параметрів:
- childTable - ім'я таблиці, яку потрібно створити.
- column_1, column_2 - стовпці, які потрібно додати до таблиці.
- fkey_name - ім'я обмеження зовнішнього ключа, яке буде створено.
- child_column1, child_column2…child_column_n - назва стовпців chidTable для посилання на первинний ключ у parentTable.
- parentTable - ім'я батьківської таблиці, на ключ якої потрібно посилатися в дочірній таблиці.
- parent_column1, parent_column2, … parent_column3 - стовпці, що утворюють первинний ключ батьківської таблиці.
- НА ВИДАЛЕННЯ. Необов'язковий параметр. Він визначає, що відбувається з дочірніми даними після видалення батьківських даних. Деякі зі значень цього параметра включають NO ACTION, SET NULL, CASCADE або SET DEFAULT.
- ON UPDATE – необов’язковий параметр. Він визначає, що відбувається з дочірніми даними після оновлення батьківських даних. Деякі зі значень цього параметра включають NO ACTION, SET NULL, CASCADE або SET DEFAULT.
- NO ACTION - використовується разом з ON DELETE і ON UPDATE. Це означає, що після оновлення або видалення батьківських даних з дочірніми даними нічого не станеться.
- CASCADE - використовується разом з ON DELETE і ON UPDATE. Дочірні дані буде видалено або оновлено після видалення або оновлення батьківських даних.
- SET NULL - використовується разом з ON DELETE і ON UPDATE. Після оновлення або видалення батьківських даних для дочірнього елемента буде встановлено значення null.
- SET DEFAULT - використовується разом із ON DELETE та ON UPDATE. Для дочірніх даних буде встановлено значення за замовчуванням після оновлення або видалення батьківських даних.
Давайте розглянемо зовнішній ключ у прикладі SQL для створення таблиці з одним стовпцем як ЗОВНІШНІМ КЛЮЧОМ:
Зовнішній ключ у прикладі SQL
Запит:
CREATE TABLE Course_Strength_TSQL ( Course_ID Int, Course_Strength Varchar(20) CONSTRAINT FK FOREIGN KEY (Course_ID) REFERENCES COURSE (Course_ID) )
Крок 1) Запустіть запит, натиснувши «Виконати».
Результат: Ми встановили відносини «батько-дитина». "Курс" та 'Course_strength_TSQL.'
Використання ALTER TABLE
Тепер ми навчимося використовувати зовнішній ключ у SQL і додати зовнішній ключ до SQL-сервера за допомогою оператора ALTER TABLE, ми будемо використовувати наведений нижче синтаксис:
ALTER TABLE childTable ADD CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);
Ось опис параметрів, використаних вище:
- childTable - ім'я таблиці, яку потрібно створити.
- column_1, column_2 - стовпці, які потрібно додати до таблиці.
- fkey_name - ім'я обмеження зовнішнього ключа, яке буде створено.
- child_column1, child_column2…child_column_n - назва стовпців chidTable для посилання на первинний ключ у parentTable.
- parentTable - ім'я батьківської таблиці, на ключ якої потрібно посилатися в дочірній таблиці.
- parent_column1, parent_column2, … parent_column3 - стовпці, що утворюють первинний ключ батьківської таблиці.
Приклад змінення таблиці додавання зовнішнього ключа:
ALTER TABLE department ADD CONSTRAINT fkey_student_admission FOREIGN KEY (admission) REFERENCES students (admission);
Ми створили зовнішній ключ під назвою fkey_student_admission у таблиці відділу. Цей зовнішній ключ посилається на стовпець прийому таблиці студентів.
Приклад запиту FOREIGN KEY
По-перше, давайте переглянемо наші дані батьківської таблиці, COURSE.
Запит:
SELECT * from COURSE;
Тепер давайте вставимо рядок у таблицю Child: 'Course_strength_TSQL.'
Ми спробуємо вставити два типи рядків
- Перший тип, для якого Course_Id у дочірній таблиці буде існувати в Course_Id батьківської таблиці. тобто Course_Id = 1 і 2
- Другий тип, для якого Course_Id у дочірній таблиці не існує в Course_Id батьківської таблиці. тобто Course_Id = 5
Запит:
Insert into COURSE_STRENGTH values (1,'SQL'); Insert into COURSE_STRENGTH values (2,'Python'); Insert into COURSE_STRENGTH values (5,'PERL');
Результат: Давайте разом запустимо запит, щоб побачити нашу таблицю «Батьківський і дочірній».
Рядок із Course_ID 1 і 2 існує в таблиці Course_strength. Тоді як Course_ID 5 є винятком.
Підсумки
- Кожне значення зовнішнього ключа має бути частиною Первинний ключ інших столів.
- Кнопка MySQL Зовнішній ключ може посилатися на інший стовпець у тій же таблиці. Це посилання відоме як самопосилання.
- Обмеження зовнішнього ключа SQL: використовується для захисту зв’язків між таблицями та недійсними даними, які потрібно вставити в стовпець зовнішнього ключа.
- Ви можете створити зовнішній ключ за допомогою «Створити таблицю», «Змінити таблицю» або SQL Server Management Studio.
- Ось різниця між первинним ключем і зовнішнім ключем: Натисніть тут