sql >> Database teknologi >  >> RDS >> Database

SQL UDENLANDSKE NØGLE

I denne artikel lærer vi om FOREIGN KEY-begrænsningerne, og hvordan man definerer en FOREIGN KEY-begrænsning for at opbygge forholdet mellem to tabeller.

I et RDBMS (Relational Databases Management System) er en FOREIGN KEY et felt eller en masse felter, som bruges til at bygge en relation mellem to tabeller eller forbinde de to tabeller.

  • FOREIGN KEY er også kendt som referencenøgle i RDBMS
  • Ved at bruge FOREIGN KEY-begrænsninger mellem to tabeller definerer vi et forældre-underordnet forhold mellem to tabeller.
  • Feltet definerer PRIMÆR NØGLE-begrænsningerne i en tabel kendt som den overordnede tabel, mens det samme felt definerer FOREIGN KEY-begrænsningerne i en anden tabel er kendt som den underordnede tabel.
  • Der kan kun være én PRIMÆR NØGLE i tabellen, men der er ingen defineret grænse for UDENLANDSKE NØGLE. Vi kan have en eller mere end én UDENLANDSKE NØGLE på bordet.
  • Vi kan definere FOREIGN KEY-begrænsninger, mens vi opretter tabellen eller definere FOREIGN KEY-begrænsninger på den allerede eksisterende tabel.

Lad os tage et eksempel for at forstå og lære om UDENLANDSKE NØGLE-begrænsningerne.

Eksempel:

Her har vi to tabeller, den ene er kursustabellen og den anden er elevtabellen:

Eleverne vælger kurser. Følgende eksempel på FOREIGN KEY-begrænsninger er defineret på ét felt.

Tabel nummer ét:Elevbord

Student_Id Fornavn Efternavn Email_Id By
101 Kareena Sayyed [email protected] Hyderabad
102 Anmol Temani [email protected] Jalgaon
103 Harshal Patel [email protected] Mumbai
104 Sakshi Hood [email protected] Pune
105 Suresh Kohli [email protected] Hyderabad

Tabel nummer to:Kursustabel

Course_Id Course_Name Student_Id
C101 Java 101
C102 SQL 102
C103 SOA Nul
C104 SAP 104
C105 MuleSoft 103
C101 Java 105

I Elev-tabellen er Student_Id-feltet PRIMÆR NØGLE, og i Kursustabellen er Student_Id UDENLANDSKE NØGLE.

FOREIGN KEY begrænsning forhindrer ugyldige data i at blive indsat i kolonnen med fremmednøgle, fordi det skal være en af ​​værdierne i den overordnede tabel.

Definer UDENLANDSKE NØGLE-begrænsninger på CREATE TABLE

Følgende eksempel definerer en UDENLANDSKE NØGLE på kursustabellen.

Først har vi lavet elevtabellen med følgende felter:

CREATE TABLE 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));

Følgende eksempel viser, hvordan man definerer FOREIGN KEY-begrænsningerne på den anden tabel.

Tabelnavnkursus:

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));

I kursustabellen definerede vi ikke nogen PRIMÆR NØGLE. Du skal blot definere FOREIGN KEY-begrænsningerne på Student_Id.

Følgende eksempel på FOREIGN KEY-begrænsninger er defineret på flere felter.

Antag, at vi har tre tabeller, den ene er pakketabellen, den anden er datatabellen, og den tredje er tabellen Tale_time:

Tabel 1:Pakke:

Package_Id Data_Id Taletids_Id
P1001 D1003 T1001
P1002 D1001 T1002
P1003 D1002 T1003
P1004 D1003 T1004
P1005 D1004 T1005

Tabel 2:Data:

Data_Id Data_Limit Data_Price
D1001 5 120
D1002 3 75
D1003 6 150
D1004 10 240
D1005 15 320

Tabel 3:Taletid:

Talk_Time_Id Talketid _grænse Talketid _Pris
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

I Talk_Time-tabellen er Talk_Time_Id den PRIMÆRE NØGLE.

I datatabellen er Data_Id den PRIMÆRE NØGLE.

Hvorimod Talk_Time_Id og Data_Id i pakketabellen er UDENLANDSKE nøgler

Tabel nummer et:Data:

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

Tabel nummer to:Tale_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));

Tabel nummer tre:Pakke:

CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Data(Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk_Time_Id));

FREIGN KEY Constraints ved hjælp af ALTER TABLE:

Antag, at vi allerede har oprettet tabellen og ønsker at definere FOREIGN KEY-begrænsningerne på feltet. Vi vil bruge ALTER TABLE-forespørgslen til at tilføje FOREIGN KEY-begrænsninger i et sådant tilfælde.

Følgeforespørgslen bruges til at tilføje FOREIGN KEY-begrænsninger i feltet Student_Id.

ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);

ADD Keyword bruges efter tabelnavnet for at tilføje FOREIGN KEY-begrænsningerne til den allerede eksisterende tabel.

SLIP UDENLANDSKE NØGLE-begrænsning fra tabellen

Brug følgende forespørgsel til at fjerne FOREIGN KEY-begrænsningen fra tabellen.

ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;

Drop søgeord bruges til at fjerne FOREIGN KEY-begrænsninger fra feltet Student_Id.

course_ibfk_1 er navnet på den fremmede nøglebegrænsning.

Vi kan have nulværdier i feltet FOREIGN KEY constraints. Vi kan have duplikerede værdier i feltet FOREIGN KEY constraints.


  1. Konverter decimaltid til timer og minutter

  2. Neo4j installation

  3. Postgres analog til CROSS APPLY i SQL Server

  4. Sådan konverteres mellem datoformater i SQL Server ved hjælp af CAST()