sql >> Databáze >  >> RDS >> Database

CIZÍ KLÍČ SQL

V tomto článku se dozvíme o omezeních FOREIGN KEY a jak definovat omezení FOREIGN KEY pro vytvoření vztahu mezi dvěma tabulkami.

V systému správy relačních databází (RDBMS) je CIZÍ KLÍČ pole nebo skupina polí, která se používají k vytvoření vztahu mezi dvěma tabulkami nebo ke spojení dvou tabulek.

  • CIZI KLÍČ je v RDBMS také známý jako referenční klíč
  • Pomocí omezení FOREIGN KEY mezi dvěma tabulkami definujeme vztah rodič-potomek mezi dvěma tabulkami.
  • Pole definuje omezení PRIMARY KEY v tabulce známé jako nadřazená tabulka, zatímco stejné pole definuje omezení FOREIGN KEY v jiné tabulce, známé jako podřízená tabulka.
  • V tabulce může být pouze jeden PRIMÁRNÍ KLÍČ, ale pro CIZÍ KLÍČ není definován žádný limit. Na stole můžeme mít jeden nebo více CIZÍCH KLÍČŮ.
  • Můžeme definovat omezení FOREIGN KEY při vytváření tabulky nebo definovat omezení FOREIGN KEY na již existující tabulce.

Vezměme si příklad, abychom pochopili a dozvěděli se o omezeních ZAHRANIČNÍCH KLÍČŮ.

Příklad:

Zde máme dvě tabulky, jedna je tabulka kurzů a druhá je tabulka studentů:

Studenti si vybírají kurzy. Následující příklad omezení FOREIGN KEY je definován v jednom poli.

Stůl číslo jedna:Studentský stůl

ID_studenta Jméno Příjmení Email_Id Město
101 Kareena Sayyed [email protected] Hyderabad
102 Anmol Temani [email protected] Jalgaon
103 Haršál Patel [email protected] Bombaj
104 Sakshi Kapotuce [email protected] Pune
105 Suresh Kohli [email protected] Hyderabad

Tabulka číslo dvě:Tabulka kurzů

Id_kurzu Název_kurzu ID_studenta
C101 Java 101
C102 SQL 102
C103 SOA Nulové
C104 SAP 104
C105 MuleSoft 103
C101 Java 105

V tabulce Student je pole Student_Id PRIMÁRNÍ KLÍČ a v tabulce Kurz je ID studenta CIZÍ KLÍČ.

FOREIGN KEY omezení brání vložení neplatných dat do sloupce cizího klíče, protože to musí být jedna z hodnot obsažených v nadřazené tabulce.

Definujte omezení FOREIGN KEY na CREATE TABLE

Následující příklad definuje CIZÍ KLÍČ v tabulce Kurz.

Nejprve jsme vytvořili tabulku Student s následujícími poli:

VYTVOŘIT TABULKU 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)); 

Následující příklad ukazuje, jak definovat omezení FOREIGN KEY na druhé tabulce.

Table Name Course:

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

V tabulce kurzů jsme nedefinovali žádný PRIMÁRNÍ KLÍČ. Stačí definovat omezení FOREIGN KEY pro Student_Id.

Následující příklad omezení FOREIGN KEY je definován pro více polí.

Předpokládejme, že máme tři tabulky, jedna je tabulka Package, druhá je tabulka Data a třetí je tabulka Talk_time:

Tabulka 1:Balíček:

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

Tabulka 2:Údaje:

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

Tabulka 3:Doba hovoru:

Talk_Time_Id Talk_Time _Limit Talk_Time _Price
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

V tabulce Talk_Time je Talk_Time_Id PRIMÁRNÍ KLÍČ.

V tabulce Data je Data_Id PRIMÁRNÍ KLÍČ.

Zatímco v tabulce Package jsou Talk_Time_Id a Data_Id CIZÍ klíče

Tabulka číslo jedna:Údaje:

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

Tabulka číslo dvě: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));

Tabulka číslo tři:Balíček:

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; 

Omezení CIZÍHO KLÍČE pomocí ALTER TABLE:

Předpokládejme, že jsme již vytvořili tabulku a chceme definovat omezení FOREIGN KEY pro pole. V takovém případě použijeme dotaz ALTER TABLE k přidání omezení FOREIGN KEY.

Následující dotaz se používá k přidání omezení FOREIGN KEY do pole Student_Id.

ALTER TABLE Kurz PŘIDAT CIZÍ KLÍČ(Student_Id) REFERENCE Student(Student_Id);

ADD Keyword se používá za názvem tabulky k přidání omezení FOREIGN KEY do již existující tabulky.

PUSTIT omezení CIZÍ KLÍČ z tabulky

Pomocí následujícího dotazu odstraňte z tabulky omezení FOREIGN KEY.

Kurz ALTER TABLE DROP FOREIGN KEY kurz_ibfk_1;

Klíčové slovo Drop se používá k odstranění omezení FOREIGN KEY z pole Student_Id.

course_ibfk_1 je název omezení cizího klíče.

V poli omezení FOREIGN KEY můžeme mít hodnoty null. Můžeme mít duplicitní hodnoty v poli omezení FOREIGN KEY.


  1. hromadné vložení z Javy do Oracle

  2. Oracle SQL GROUP BY není nápověda k výrazu GROUP BY

  3. Kontrolní omezení překrývajícího se období

  4. Klient Oracle ORA-12541:TNS:žádný posluchač