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

Regels voor FOREIGN KEY in SQL
Hoe de buitenlandse sleutel werkt

Hoe u een FOREIGN KEY in SQL kunt maken

Wij kunnen een Vreemde sleutel in SQL-server in 2 manieren:

  1. SQL Server Management Studio
  2. 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.

Maak een FOREIGN KEY in SQL

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...

Maak een FOREIGN KEY in SQL

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.

Maak een FOREIGN KEY in SQL

Stap 3) In 'Buitenlandse sleutelrelatie,' Klik 'Toevoegen'

Maak een FOREIGN KEY in SQL

Stap 4) Klik in 'Tabel- en kolomspecificatie' op '…' icoon

Maak een FOREIGN KEY in SQL

Stap 5) Selecteer 'Primary Key Table' als 'COURSE' en de nieuwe tabel die nu wordt aangemaakt als 'Foreign Key Table' uit de vervolgkeuzelijst.

Maak een FOREIGN KEY in SQL

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.

Maak een FOREIGN KEY in SQL

Stap 7) Klik op Toe te voegen.

Maak een FOREIGN KEY in SQL

Stap 8) Geef de tabelnaam 'Course_Strength' en klik op OK.

Maak een FOREIGN KEY in SQL

Resultaat: We hebben de ouder-kindrelatie tussen ingesteld 'Cursus' en 'Cursus_sterkte.'

Maak een FOREIGN KEY in SQL

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.

Maak een bovenliggende-kindtabel met T-SQL

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.

Buitenlandse sleutel in SQL

Resultaat: We hebben de ouder-kindrelatie tussen ingesteld 'Cursus' en 'Cursus_sterkte_TSQL.'

Buitenlandse sleutel in SQL

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;

Voorbeeldquery FOREIGN KEY

Laten we nu een rij invoegen in de Child-tabel: 'Cursus_sterkte_TSQL.'

We zullen proberen twee soorten rijen in te voegen

  1. 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
  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');

Voorbeeldquery FOREIGN KEY

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.

Voorbeeldquery FOREIGN KEY

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