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
Можем да създадем a Чужд ключ в SQL сървър в 2 начина:
- Студио за управление на SQL Server
- T-SQL
Студио за управление на SQL Server
Родителска таблица: Да кажем, че имаме съществуваща родителска таблица като „Курс“. 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' и щракнете върху OK.
Резултат: Задали сме връзка родител-дете между "курс" намлява „Course_strength.“
T-SQL: Създайте таблица родител-дете с помощта на 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.
- ПРИ АКТУАЛИЗИРАНЕ - незадължителен параметър. Той определя какво се случва с дъщерните данни след актуализиране на родителските данни. Някои от стойностите за този параметър включват 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 на таблицата 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');
Резултат: Нека изпълним заявката заедно, за да видим нашата таблица родител и дете
Ред с Course_ID 1 и 2 съществува в таблицата Course_strength. Като има предвид, че Course_ID 5 е изключение.
Oбобщение
- Всяка стойност на външен ключ трябва да бъде част от Първичен ключ на други маси.
- - MySQL Външният ключ може да препраща към друга колона в същата таблица. Тази препратка е известна като самопрепратка.
- Ограничение за външен ключ на SQL: използва се за защита на връзките между таблици и невалидни данни, които да бъдат вмъкнати в колоната за външен ключ.
- Можете да създадете външен ключ, като използвате Create Table, Alter Table или Студио за управление на SQL Server.
- Ето разликата между първичния и външния ключ: Натисни тук