sql >> Databasteknik >  >> RDS >> Database

SQL UTLÄNDSK NYCKEL

I den här artikeln kommer vi att lära oss om FOREIGN KEY-begränsningarna och hur man definierar en FOREIGN KEY-begränsning för att bygga relationen mellan två tabeller.

I ett RDBMS (Relational Databases Management System) är en FOREIGN KEY ett fält eller en massa fält som används för att bygga en relation mellan två tabeller eller förena de två tabellerna.

  • FREIGN KEY är också känd som referensnyckel i RDBMS
  • Genom att använda FOREIGN KEY-begränsningar mellan två tabeller definierar vi en förälder-underordnad relation mellan två tabeller.
  • Fältet definierar PRIMARY KEY-begränsningarna i en tabell som kallas den överordnade tabellen, medan samma fält definierar FOREIGN KEY-begränsningarna i en annan tabell kallas den underordnade tabellen.
  • Det kan bara finnas en PRIMÄR NYCKEL i tabellen, men det finns ingen definierad gräns för den UTLÄNDSKA NYCKELN. Vi kan ha en eller fler än en UTLÄNDSK NYCKEL på bordet.
  • Vi kan definiera FOREIGN KEY-begränsningar medan vi skapar tabellen eller definiera FOREIGN KEY-begränsningar på den redan befintliga tabellen.

Låt oss ta ett exempel för att förstå och lära oss om begränsningarna i FOREIGN KEY.

Exempel:

Här har vi två tabeller, den ena är kurstabellen och den andra är elevtabellen:

Eleverna väljer kurser. Följande exempel på FOREIGN KEY-begränsningar definieras på ett fält.

Tabell nummer ett:Elevbord

Student_Id First_Name Efternamn Email_Id Stad
101 Kareena Sayyed [email protected] Hyderabad
102 Anmol Temani [email protected] Jalgaon
103 Harshal Patel [email protected] Mumbai
104 Sakshi Huv [email protected] Pune
105 Suresh Kohli [email protected] Hyderabad

Tabell nummer två:Kurstabell

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

I elevtabellen är fältet Student_Id den PRIMÄRA NYCKELN och i kurstabellen är Student_Id den UTLÄNDSKA NYCKELN.

FOREIGN KEY begränsning förhindrar att ogiltiga data infogas i kolumnen för främmande nyckel eftersom det måste vara ett av värdena i den överordnade tabellen.

Definiera UTLÄNDSKA NYCKELbegränsningar på CREATE TABLE

Följande exempel definierar en UTLÄNDSK NYCKEL på kurstabellen.

Först har vi skapat elevtabellen med följande fält:

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öljande exempel visar hur man definierar FOREIGN KEY-begränsningarna i den andra tabellen.

Tabellnamnkurs:

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 kurstabellen definierade vi inte någon PRIMÄRNYCKEL. Definiera bara FOREIGN KEY-begränsningarna på Student_Id.

Följande exempel på FOREIGN KEY-begränsningar definieras på flera fält.

Anta att vi har tre tabeller, en är pakettabellen, den andra är datatabellen och den tredje är tabellen Talk_time:

Tabell 1:Paket:

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

Tabell 2:Data:

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

Tabell 3:Talktid:

Talk_Time_Id Talktidsgräns Talktid _Pris
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

I tabellen Talk_Time är Talk_Time_Id den PRIMÄRA NYCKELN.

I datatabellen är Data_Id PRIMÄRNYCKELN.

Medan i pakettabellen är Talk_Time_Id och Data_Id utländska nycklar

Tabell nummer ett:Data:

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

Tabell nummer två:Talktid:

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

Tabell nummer tre:Paket:

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-begränsningar med ALTER TABLE:

Anta att vi redan har skapat tabellen och vill definiera FOREIGN KEY-begränsningarna på fältet. Vi kommer att använda ALTER TABLE-frågan för att lägga till FOREIGN KEY-begränsningar i ett sådant fall.

Följningsfrågan används för att lägga till FOREIGN KEY-begränsningar i fältet Student_Id.

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

ADD Keyword används efter tabellnamnet för att lägga till FOREIGN KEY-begränsningarna till den redan befintliga tabellen.

SLIPPA UTLÄNDLIG KEY från tabellen

Använd följande fråga för att ta bort FOREIGN KEY-begränsningen från tabellen.

ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;

Släpp nyckelord används för att ta bort FOREIGN KEY-begränsningar från Student_Id-fältet.

course_ibfk_1 är namnet på den främmande nyckeln.

Vi kan ha nollvärden i fältet FOREIGN KEY-begränsningar. Vi kan ha dubbletter av värden i fältet FOREIGN KEY constraints.


  1. Indexerar MySQL kolumner för främmande nyckel automatiskt?

  2. Ersätt första förekomsten av delsträng i en sträng i SQL

  3. postgresql - ersätt alla instanser av en sträng i textfält

  4. Hur kommer jag åt Oracle från Python?