SQL FOREIGN KEY: Hoe te creëren in SQL Server met voorbeeld
Wat is een BUITENLANDSE SLEUTEL?
A Vreemde sleutel biedt een manier om referentiële integriteit binnen SQL Server af te dwingen. In eenvoudige bewoordingen zorgt de externe sleutel ervoor dat waarden in de ene tabel aanwezig moeten zijn in een andere tabel.
Regels voor BUITENLANDSE SLEUTEL
- NULL is toegestaan in de externe SQL-sleutel.
- De tabel waarnaar wordt verwezen, wordt de bovenliggende tabel genoemd
- De tabel met de Foreign Key in SQL wordt Child Table genoemd.
- De SQL Foreign Key in de onderliggende tabel verwijst naar de primaire sleutel in de bovenliggende tabel.
- Deze ouder-kindrelatie dwingt de regel af die bekend staat als 'Referentieel' Integrity. '
Het onderstaande voorbeeld van een vreemde sleutel in SQL met diagram vat alle bovenstaande punten voor een vreemde sleutel samen

Hoe u een FOREIGN KEY in SQL kunt maken
Wij kunnen een Vreemde sleutel in SQL-server in 2 manieren:
- SQL Server Management Studio
- T-SQL
SQL Server Management Studio
Bovenliggende tabel: Stel dat we een bestaande oudertabel hebben als 'Cursus'. Cursus_ID en Cursusnaam zijn twee kolommen met Cursus_Id als primaire sleutel.
Kindertafel: We moeten de tweede tabel als onderliggende tabel maken. 'Course_ID' en 'Course_Strength' als twee kolommen. 'Cursus_ID' moet echter een buitenlandse sleutel zijn.
Stap 1) Klik met de rechtermuisknop op Tabellen>Nieuw> Tabel...
Stap 2) Voer twee kolomnamen in als 'Course_ID' en 'Course_Strength'. Klik met de rechtermuisknop op de kolom 'Cursus_Id'. Klik nu op Relatie.
Stap 3) In 'Buitenlandse sleutelrelatie,' Klik 'Toevoegen'
Stap 4) Klik in 'Tabel- en kolomspecificatie' op '…' icoon
Stap 5) Selecteer 'Primary Key Table' als 'COURSE' en de nieuwe tabel die nu wordt aangemaakt als 'Foreign Key Table' uit de vervolgkeuzelijst.
Stap 6) 'Primaire sleuteltabel' – Selecteer de kolom 'Cursus_Id' als kolom 'Primaire sleuteltabel'.
'Foreign Key Table' - Selecteer de kolom 'Course_Id' als kolom 'Foreign Key table'. Klik OK.
Stap 7) Klik op Toe te voegen.
Stap 8) Geef de tabelnaam 'Course_Strength' en klik op OK.
Resultaat: We hebben de ouder-kindrelatie tussen ingesteld 'Cursus' en 'Cursus_sterkte.'
T-SQL: Maak een Parent-child-tabel met behulp van T-SQL
Bovenliggende tabel: Denk er nog eens over na: we hebben een bestaande bovenliggende tabel met de tabelnaam 'Cursus'.
Cursus_ID en Cursusnaam zijn twee kolommen met Cursus_Id als primaire sleutel.
Kindertafel: We moeten de tweede tabel maken als de onderliggende tabel met de naam 'Course_Strength_TSQL'.
'Course_ID' en 'Course_Strength' als twee kolommen voor onderliggende tabel Course_Strength_TSQL.' 'Cursus_ID' moet echter een buitenlandse sleutel zijn.
Hieronder vindt u de syntaxis om een tabel te maken met FOREIGN KEY
Syntax:
CREATE TABLE childTable ( column_1 datatype [ NULL |NOT NULL ], column_2 datatype [ NULL |NOT NULL ], ... CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n) [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] );
Hier volgt een beschrijving van de bovenstaande parameters:
- childTable is de naam van de tabel die moet worden gemaakt.
- column_1, column_2- de kolommen die aan de tabel moeten worden toegevoegd.
- fkey_name: de naam van de externe sleutelbeperking die moet worden gemaakt.
- child_column1, child_column2…child_column_n- de naam van chidTable-kolommen die verwijzen naar de primaire sleutel in parentTable.
- parentTable- de naam van de bovenliggende tabel waarvan de sleutel moet worden verwezen in de onderliggende tabel.
- parent_column1, parent_column2, … parent_column3: de kolommen die de primaire sleutel van de bovenliggende tabel vormen.
- OP VERWIJDEREN. Een optionele parameter. Het specificeert wat er met de onderliggende gegevens gebeurt na het verwijderen van de bovenliggende gegevens. Enkele waarden voor deze parameter zijn NO ACTION, SET NULL, CASCADE of SET DEFAULT.
- ON UPDATE- Een optionele parameter. Het specificeert wat er gebeurt met de onderliggende gegevens na het bijwerken van de bovenliggende gegevens. Enkele waarden voor deze parameter zijn NO ACTION, SET NULL, CASCADE of SET DEFAULT.
- GEEN ACTIE - gebruikt in combinatie met ON DELETE en ON UPDATE. Het betekent dat er niets gebeurt met de onderliggende gegevens na het bijwerken of verwijderen van de bovenliggende gegevens.
- CASCADE- gebruikt samen met ON DELETE en ON UPDATE. De kindgegevens worden verwijderd of bijgewerkt nadat de oudergegevens zijn verwijderd of bijgewerkt.
- SET NULL- gebruikt samen met ON DELETE en ON UPDATE. Het kind wordt op nul gezet nadat de oudergegevens zijn bijgewerkt of verwijderd.
- SET DEFAULT - gebruikt samen met ON DELETE en ON UPDATE. De onderliggende gegevens worden ingesteld op standaardwaarden na een update of verwijdering van de bovenliggende gegevens.
Laten we een Foreign Key in SQL-voorbeeld bekijken om een tabel te maken met één kolom als FOREIGN KEY:
Foreign Key in SQL-voorbeeld
Query:
CREATE TABLE Course_Strength_TSQL ( Course_ID Int, Course_Strength Varchar(20) CONSTRAINT FK FOREIGN KEY (Course_ID) REFERENCES COURSE (Course_ID) )
Stap 1) Voer de query uit door op uitvoeren te klikken.
Resultaat: We hebben de ouder-kindrelatie tussen ingesteld 'Cursus' en 'Cursus_sterkte_TSQL.'
ALTER TABEL gebruiken
Nu zullen we leren hoe we Foreign Key in SQL kunnen gebruiken en hoe we Foreign Key in de SQL-server kunnen toevoegen met behulp van de ALTER TABLE-instructie. We zullen de onderstaande syntaxis gebruiken:
ALTER TABLE childTable ADD CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);
Hier volgt een beschrijving van de hierboven gebruikte parameters:
- childTable is de naam van de tabel die moet worden gemaakt.
- column_1, column_2- de kolommen die aan de tabel moeten worden toegevoegd.
- fkey_name: de naam van de externe sleutelbeperking die moet worden gemaakt.
- child_column1, child_column2…child_column_n- de naam van chidTable-kolommen die verwijzen naar de primaire sleutel in parentTable.
- parentTable- de naam van de bovenliggende tabel waarvan de sleutel moet worden verwezen in de onderliggende tabel.
- parent_column1, parent_column2, … parent_column3: de kolommen die de primaire sleutel van de bovenliggende tabel vormen.
Wijzig tabel en voeg een voorbeeld van een buitenlandse sleutel toe:
ALTER TABLE department ADD CONSTRAINT fkey_student_admission FOREIGN KEY (admission) REFERENCES students (admission);
We hebben een externe sleutel met de naam fkey_student_admission gemaakt in de afdelingstabel. Deze externe sleutel verwijst naar de toelatingskolom van de studententabel.
Voorbeeldquery FOREIGN KEY
Laten we eerst eens kijken naar onze bovenliggende tabelgegevens, CURSUS.
Query:
SELECT * from COURSE;
Laten we nu een rij invoegen in de Child-tabel: 'Cursus_sterkte_TSQL.'
We zullen proberen twee soorten rijen in te voegen
- Het eerste type, waarvoor Course_Id in de onderliggende tabel zal bestaan in Course_Id van de Parent-tabel. dat wil zeggen Cursus_Id = 1 en 2
- Het tweede type, waarvoor Course_Id in de onderliggende tabel niet bestaat in de Course_Id van de Parent-tabel. dat wil zeggen Cursus_Id = 5
Query:
Insert into COURSE_STRENGTH values (1,'SQL'); Insert into COURSE_STRENGTH values (2,'Python'); Insert into COURSE_STRENGTH values (5,'PERL');
Resultaat: Laten we samen de query uitvoeren om onze ouder- en kindtabel te bekijken
Er bestaan rijen met Course_ID 1 en 2 in de Course_strength-tabel. Terwijl Course_ID 5 een uitzondering is.
Samenvatting
- Elke waarde van Foreign Key moet deel uitmaken van Hoofdsleutel van andere tafels.
- Uw partner voor MySQL Foreign Key kan verwijzen naar een andere kolom in dezelfde tabel. Deze verwijzing staat bekend als een zelfreferentie.
- SQL Foreign Key Constraint: wordt gebruikt om de koppelingen tussen tabellen en ongeldige gegevens te beveiligen die in de Foreign Key-kolom moeten worden ingevoegd.
- U kunt een externe sleutel maken met behulp van Tabel maken, Tabel wijzigen of SQL Server Management Studio.
- Hier is het verschil tussen primaire sleutel en buitenlandse sleutel: Klik Hier