Database
 sql >> база данни >  >> RDS >> Database

SQL ВЪНШЕН КЛЮЧ

В тази статия ще научим за ограниченията FOREIGN KEY и как да дефинираме ограничение FOREIGN KEY, за да изградим връзката между две таблици.

В система за управление на релационни бази данни (RDBMS) ВЪНШЕН КЛЮЧ е поле или куп полета, които се използват за изграждане на връзка между две таблици или за свързване на двете таблици.

  • ВЪНШЕН КЛЮЧ е известен също като референтен ключ в RDBMS
  • Използвайки ограничения FOREIGN KEY между две таблици, ние дефинираме връзка родител-подчинение между две таблици.
  • Полето дефинира ограниченията ПЪРВЕН КЛЮЧ в таблица, известна като родителска таблица, докато същото поле дефинира ограниченията FOREIGN KEY в друга таблица, известна като дъщерна таблица.
  • В таблицата може да има само един ПЪРВИЧЕН КЛЮЧ, но няма дефинирано ограничение за ВЪНШИЯ КЛЮЧ. Можем да имаме един или повече от един ВЪНШЕН КЛЮЧ на масата.
  • Можем да дефинираме ограничения на ВЪНШЕН КЛЮЧ, докато създаваме таблицата, или да дефинираме ограничения на ВЪНШЕН КЛЮЧ върху вече съществуваща таблица.

Нека вземем пример, за да разберем и научим за ограниченията FOREIGN KEY.

Пример:

Тук имаме две таблици, едната е таблицата на курса, а втората е таблицата на студентите:

Студентите избират курсове. Следният пример за ограничения на ВЪНШЕН КЛЮЧ е дефиниран в едно поле.

Таблица номер едно:Студентска маса

Id_Id Име Фамилия Email_Id Град
101 Карина Сайед [email protected] Хайдерабад
102 Анмол Темани [email protected] Джалгаон
103 Харшал Пател [email protected] Мумбай
104 Сакши Качулка [email protected] Пуна
105 Суреш Коли [email protected] Хайдерабад

Таблица номер две:курсова таблица

Course_Id Име_на_курс Идентификационен номер на ученика
C101 Java 101
C102 SQL 102
C103 SOA Null
C104 SAP 104
C105 MuleSoft 103
C101 Java 105

В таблицата Student, полето Student_Id е ПЪРВИЧНИЯ КЛЮЧ, а в таблицата на курса Student_Id е ВЪНШИЯТ КЛЮЧ.

FOREIGN KEY ограничението предотвратява вмъкването на невалидни данни в колоната за външен ключ, защото трябва да е една от стойностите, съдържащи се в родителската таблица.

Дефинирайте ограничения на ВЪНШИЯ КЛЮЧ при CREATE TABLE

Следният пример дефинира ВЪНШЕН КЛЮЧ в таблицата на курса.

Първо, създадохме таблицата Student със следните полета:

СЪЗДАВАНЕ НА ТАБЛИЦА Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50),  City varchar(20) NOT NULL, PRIMARY KEY(Student_Id)); 

Следващият пример показва как да дефинирате ограниченията FOREIGN KEY на другата таблица.

Курс за име на таблица:

CREATE TABLE Course( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));

В таблицата на курса не сме дефинирали ПЪРВИЧЕН КЛЮЧ. Просто дефинирайте ограниченията FOREIGN KEY за Student_Id.

Следният пример за ограничения на ВЪНШЕН КЛЮЧ е дефиниран за множество полета.

Да предположим, че имаме три таблици, едната е таблицата за пакети, втората е таблицата с данни, а третата е таблицата Talk_time:

Таблица 1:Пакет:

Package_Id Идентификатор на_данни Talktime_Id
P1001 D1003 T1001
P1002 D1001 T1002
P1003 D1002 T1003
P1004 D1003 T1004
P1005 D1004 T1005

Таблица 2:Данни:

Data_Id Данни_Limit Цена_данни
D1001 5 120
D1002 3 75
D1003 6 150
D1004 10 240
D1005 15 320

Таблица 3:Време за разговор:

Talk_Time_Id Talk_Time_Limit Време за разговор _Цена
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

В таблицата Talk_Time, Talk_Time_Id е ПРАВИЛНИЯ КЛЮЧ.

В таблицата с данни Data_Id е ПЪРВИЧНИЯ КЛЮЧ.

Докато в таблицата с пакети Talk_Time_Id и Data_Id са ЧУЖДИТЕ ключове

Таблица номер едно:Данни:

CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));

Таблица номер две:Talk_Time:

CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));

Таблица номер три:Пакет:

CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Данни (Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk)); 

Ограничения за ВЪНШЕН КЛЮЧ, използвайки ALTER TABLE:

Да предположим, че вече сме създали таблицата и искаме да дефинираме ограниченията FOREIGN KEY в полето. Ще използваме заявката ALTER TABLE, за да добавим ограничения за ВЪНШЕН КЛЮЧ в такъв случай.

Следващата заявка се използва за добавяне на ограничения FOREIGN KEY в полето Student_Id.

ALTER TABLE Курс ДОБАВЯНЕ НА ВЪНШЕН КЛЮЧ(Идентификатор_на_студент) ПРЕПОРЪЧКИ Студент(Идентификатор на_учащ);

Ключова дума ADD се използва след името на таблицата, за да се добавят ограниченията FOREIGN KEY към вече съществуващата таблица.

ИЗПУСКАНЕ НА ВЪНШИЯ КЛЮЧ ограничение от таблицата

Използвайте следната заявка, за да премахнете ограничението FOREIGN KEY от таблицата.

ALTER TABLE Cours DROP FOREIGN KEY course_ibfk_1;

Ключовата дума Drop се използва за премахване на ограниченията FOREIGN KEY от полето Student_Id.

course_ibfk_1 е името на ограничението за външния ключ.

Можем да имаме нулеви стойности в полето за ограничения FOREIGN KEY. Можем да имаме дублиращи се стойности в полето за ограничения FOREIGN KEY.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Продуктова номенклатура и архитектура на IRI

  2. Как стартират паралелните планове – част 5

  3. Как да нулирате главната потребителска парола на Amazon RDS

  4. Митове за производителността:Променливите в таблицата винаги са в паметта

  5. Intel обречен ли е в пространството на сървърния процесор?