Database
 sql >> Datenbank >  >> RDS >> Database

SQL-FREMDSCHLÜSSEL

In diesem Artikel lernen wir etwas über die FOREIGN KEY-Einschränkungen und wie man eine FOREIGN KEY-Einschränkung definiert, um die Beziehung zwischen zwei Tabellen aufzubauen.

In einem Managementsystem für relationale Datenbanken (RDBMS) ist ein FOREIGN KEY ein Feld oder eine Reihe von Feldern, die verwendet werden, um eine Beziehung zwischen zwei Tabellen aufzubauen oder die beiden Tabellen zu verknüpfen.

  • FREMDSCHLÜSSEL wird im RDBMS auch als referenzierender Schlüssel bezeichnet
  • Durch die Verwendung von FOREIGN KEY-Einschränkungen zwischen zwei Tabellen definieren wir eine Eltern-Kind-Beziehung zwischen zwei Tabellen.
  • Das Feld definiert die PRIMARY KEY-Einschränkungen in einer Tabelle, die als übergeordnete Tabelle bekannt ist, während dasselbe Feld die FOREIGN KEY-Einschränkungen in einer anderen Tabelle definiert, die als untergeordnete Tabelle bezeichnet wird.
  • Es kann nur einen PRIMARY KEY in der Tabelle geben, aber es gibt kein definiertes Limit für den FOREIGN KEY. Wir können einen oder mehr als einen FOREIGN KEY auf dem Tisch haben.
  • Wir können FOREIGN KEY-Einschränkungen beim Erstellen der Tabelle definieren oder FOREIGN KEY-Einschränkungen für die bereits vorhandene Tabelle definieren.

Nehmen wir ein Beispiel, um die FOREIGN KEY-Einschränkungen zu verstehen und zu lernen.

Beispiel:

Hier haben wir zwei Tabellen, eine ist die Course-Tabelle und die zweite die Student-Tabelle:

Die Studierenden wählen Lehrveranstaltungen aus. Das folgende FOREIGN KEY-Einschränkungsbeispiel ist für ein Feld definiert.

Tisch Nummer eins:Schülertisch

Student_ID Vorname Nachname E-Mail_ID Stadt
101 Kareena Sayyed [email protected] Hyderabad
102 Anmol Temani [email protected] Jalgaon
103 Harshal Patel [email protected] Mumbai
104 Sakshi Haube [email protected] Pune
105 Sicher Kohli [email protected] Hyderabad

Tabelle Nummer Zwei:Kurstabelle

Kurs_ID Kursname Student_ID
C101 Java 101
C102 SQL 102
C103 SOA Null
C104 SAP 104
C105 MuleSoft 103
C101 Java 105

In der Student-Tabelle ist das Feld Student_Id der PRIMARY KEY und in der Course-Tabelle ist Student_Id der FOREIGN KEY.

Der FOREIGN KEY Einschränkung verhindert, dass ungültige Daten in die Fremdschlüsselspalte eingefügt werden, da es sich um einen der in der übergeordneten Tabelle enthaltenen Werte handeln muss.

Definiere FOREIGN KEY Constraints auf CREATE TABLE

Das folgende Beispiel definiert einen FOREIGN KEY in der Course-Tabelle.

Zuerst haben wir die Student-Tabelle mit den folgenden Feldern erstellt:

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

Das folgende Beispiel zeigt, wie die FOREIGN KEY-Einschränkungen für die andere Tabelle definiert werden.

Tabellenname Kurs:

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

In der Course-Tabelle haben wir keinen PRIMARY KEY definiert. Definieren Sie einfach die FOREIGN KEY-Einschränkungen für die Student_Id.

Das folgende FOREIGN KEY-Einschränkungsbeispiel ist für mehrere Felder definiert.

Angenommen, wir haben drei Tabellen, eine ist die Package-Tabelle, die zweite die Data-Tabelle und die dritte die Talk_time-Tabelle:

Tabelle 1:Paket:

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

Tabelle 2:Daten:

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

Tabelle 3:Talk_Time:

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

In der Talk_Time-Tabelle ist Talk_Time_Id der PRIMARY KEY.

In der Datentabelle ist Data_Id der PRIMARY KEY.

Während in der Pakettabelle Talk_Time_Id und Data_Id die FOREIGN-Schlüssel sind

Tabelle Nummer eins:Daten:

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

Tabelle Nummer zwei: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));

Tabelle Nummer drei: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));

FREMDSCHLÜSSEL-Einschränkungen mit ALTER TABLE:

Angenommen, wir haben die Tabelle bereits erstellt und möchten die FOREIGN KEY-Einschränkungen für das Feld definieren. Wir werden die ALTER TABLE-Abfrage verwenden, um in einem solchen Fall FOREIGN KEY-Einschränkungen hinzuzufügen.

Die folgende Abfrage wird verwendet, um FOREIGN KEY-Einschränkungen für das Feld Student_Id hinzuzufügen.

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

Das Schlüsselwort ADD wird nach dem Tabellennamen verwendet, um die FOREIGN KEY-Einschränkungen zu der bereits vorhandenen Tabelle hinzuzufügen.

DOP FOREIGN KEY Constraint aus der Tabelle

Verwenden Sie die folgende Abfrage, um die Einschränkung FOREIGN KEY aus der Tabelle zu entfernen.

ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;

Das Schlüsselwort Drop wird verwendet, um FOREIGN KEY-Einschränkungen aus dem Feld Student_Id zu entfernen.

course_ibfk_1 ist der Name der Fremdschlüsselbeschränkung.

Wir können Nullwerte im FOREIGN KEY-Einschränkungsfeld haben. Wir können doppelte Werte im FOREIGN KEY-Einschränkungsfeld haben.