SQL FOREIGN KEY: Как да създадете в SQL Server с пример

Какво е FOREIGN KEY?

A Чужд ключ предоставя начин за налагане на референтна цялост в SQL Server. С прости думи външният ключ гарантира, че стойностите в една таблица трябва да присъстват в друга таблица.

Правила за FOREIGN KEY

  • NULL е разрешено във външния ключ на SQL.
  • Таблицата, към която се препраща, се нарича родителска таблица
  • Таблицата с външния ключ в SQL се нарича Child Table.
  • Външният ключ на SQL в дъщерната таблица препраща към първичния ключ в родителската таблица.
  • Тази връзка родител-дете налага правилото, известно като „Референтно Integrity"

Примерът за външен ключ по-долу в SQL с диаграма обобщава всички точки по-горе за FOREIGN KEY

Правила за FOREIGN KEY в SQL
Как работи външният ключ

Как да създадете FOREIGN KEY в SQL

Можем да създадем a Чужд ключ в SQL сървър в 2 начина:

  1. Студио за управление на SQL Server
  2. T-SQL

Студио за управление на SQL Server

Родителска таблица: Да кажем, че имаме съществуваща родителска таблица като „Курс“. 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' и щракнете върху OK.

Създайте FOREIGN KEY в SQL

Резултат: Задали сме връзка родител-дете между "курс" намлява „Course_strength.“

Създайте FOREIGN KEY в SQL

T-SQL: Създайте таблица родител-дете с помощта на 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.
  • ПРИ АКТУАЛИЗИРАНЕ - незадължителен параметър. Той определя какво се случва с дъщерните данни след актуализиране на родителските данни. Някои от стойностите за този параметър включват 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 на таблицата Parent. т.е. 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

Oбобщение

  • Всяка стойност на външен ключ трябва да бъде част от Първичен ключ на други маси.
  • - MySQL Външният ключ може да препраща към друга колона в същата таблица. Тази препратка е известна като самопрепратка.
  • Ограничение за външен ключ на SQL: използва се за защита на връзките между таблици и невалидни данни, които да бъдат вмъкнати в колоната за външен ключ.
  • Можете да създадете външен ключ, като използвате Create Table, Alter Table или Студио за управление на SQL Server.
  • Ето разликата между първичния и външния ключ: Натисни тук