ЗОВНІШНИЙ КЛЮЧ SQL: як створити на SQL Server із прикладом

Що таке ЗОВНІШНІЙ КЛЮЧ?

A Зовнішній ключ забезпечує спосіб забезпечення посилальної цілісності в SQL Server. Простими словами, зовнішній ключ гарантує, що значення в одній таблиці повинні бути присутніми в іншій таблиці.

Правила для FOREIGN KEY

  • У зовнішньому ключі SQL допускається значення NULL.
  • Таблиця, на яку посилаються, називається батьківською таблицею
  • Таблиця із зовнішнім ключем у SQL називається дочірньою таблицею.
  • Зовнішній ключ SQL у дочірній таблиці посилається на первинний ключ у батьківській таблиці.
  • Ці стосунки «батьки-нащадки» забезпечують виконання правила, відомого як «посилання Integrity».

Наведений нижче приклад зовнішнього ключа в SQL із діаграмою підсумовує всі наведені вище пункти для FOREIGN KEY

Правила для FOREIGN KEY в SQL
Як працює зовнішній ключ

Як створити FOREIGN KEY в SQL

Ми можемо створити a Зовнішній ключ на сервері SQL в 2 способи:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

Батьківська таблиця: Скажімо, ми маємо існуючу батьківську таблицю як «Курс». Course_ID і Course_name — це два стовпці з Course_Id як первинним ключем.

Створіть FOREIGN KEY у SQL

Дочірня таблиця: Нам потрібно створити другу таблицю як дочірню. «Course_ID» і «Course_Strength» як два стовпці. Однак «Course_ID» має бути зовнішнім ключем.

Крок 1) Клацніть правою кнопкою миші Таблиці>Створити> Таблиця…

Створіть FOREIGN KEY у SQL

Крок 2) Введіть назву двох стовпців як «Course_ID» і «Course_Strength». Клацніть правою кнопкою миші на стовпці "Course_Id". Тепер натисніть «Відносини».

Створіть FOREIGN KEY у SQL

Крок 3) In «Іноземні ключові відносини,' Натисніть 'Додати'

Створіть FOREIGN KEY у SQL

Крок 4) У розділі «Специфікація таблиць і стовпців» натисніть значок «…».

Створіть FOREIGN KEY у SQL

Крок 5) Виберіть «Таблиця первинного ключа» як «КУРС», а нову таблицю, яка зараз створюється, як «Таблицю зовнішнього ключа» зі спадного меню.

Створіть FOREIGN KEY у SQL

Крок 6) «Таблиця первинного ключа» – виберіть стовпець «Course_Id» як стовпець «Таблиця первинного ключа».

«Таблиця іноземних ключів» - виберіть стовпець «Course_Id» як стовпець «Таблиця іноземних ключів». Натисніть OK.

Створіть FOREIGN KEY у SQL

Крок 7) Натисніть Додати.

Створіть FOREIGN KEY у SQL

Крок 8) Назвіть таблицю «Course_Strength» і натисніть ОК.

Створіть FOREIGN KEY у SQL

Результат: Ми встановили відносини «батько-дитина». "Курс" та 'Course_strength.'

Створіть FOREIGN KEY у SQL

T-SQL: створіть таблицю Parent-child за допомогою T-SQL

Батьківська таблиця: Подумайте ще раз, у нас є існуюча батьківська таблиця з назвою таблиці як «Курс».

Course_ID і Course_name — це два стовпці з Course_Id як первинним ключем.

Створіть батьківсько-начірню таблицю за допомогою T-SQL

Дочірня таблиця: Нам потрібно створити другу таблицю як дочірню таблицю з назвою «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) Запустіть запит, натиснувши «Виконати».

Зовнішній ключ у SQL

Результат: Ми встановили відносини «батько-дитина». "Курс" та 'Course_strength_TSQL.'

Зовнішній ключ у SQL

Використання 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;

Приклад запиту FOREIGN KEY

Тепер давайте вставимо рядок у таблицю Child: 'Course_strength_TSQL.'

Ми спробуємо вставити два типи рядків

  1. Перший тип, для якого Course_Id у дочірній таблиці буде існувати в Course_Id батьківської таблиці. тобто Course_Id = 1 і 2
  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');

Приклад запиту FOREIGN KEY

Результат: Давайте разом запустимо запит, щоб побачити нашу таблицю «Батьківський і дочірній».

Рядок із Course_ID 1 і 2 існує в таблиці Course_strength. Тоді як Course_ID 5 є винятком.

Приклад запиту FOREIGN KEY

Підсумки

  • Кожне значення зовнішнього ключа має бути частиною Первинний ключ інших столів.
  • Кнопка MySQL Зовнішній ключ може посилатися на інший стовпець у тій же таблиці. Це посилання відоме як самопосилання.
  • Обмеження зовнішнього ключа SQL: використовується для захисту зв’язків між таблицями та недійсними даними, які потрібно вставити в стовпець зовнішнього ключа.
  • Ви можете створити зовнішній ключ за допомогою «Створити таблицю», «Змінити таблицю» або SQL Server Management Studio.
  • Ось різниця між первинним ключем і зовнішнім ключем: Натисніть тут