SQL UTENLANDSK NØKKEL: Hvordan lage i SQL Server med eksempel

Hva er en utenlandsnøkkel?

A Foreign Key gir en måte å håndheve referanseintegritet i SQL Server. Med enkle ord, fremmednøkkel sikrer at verdier i en tabell må være til stede i en annen tabell.

Regler for UTENLANDSK NØKKEL

  • NULL er tillatt i SQL fremmednøkkel.
  • Tabellen det refereres til kalles overordnet tabell
  • Tabellen med Foreign Key i SQL kalles Child Table.
  • SQL Foreign Key i underordnet tabell refererer til primærnøkkelen i den overordnede tabellen.
  • Dette foreldre-barn-forholdet håndhever regelen som er kjent som "Referensiell Integrity».

Nedenfor fremmednøkkel i SQL-eksempel med diagram oppsummerer alle punktene ovenfor for FOREIGN KEY

Regler for FOREIGN KEY i SQL
Hvordan utenlandsk nøkkel fungerer

Hvordan lage utenlandsk nøkkel i SQL

Vi kan lage en Foreign Key i SQL server i 2 måter:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

Overordnet tabell: La oss si at vi har en eksisterende overordnet tabell som "Kurs". Course_ID og Course_name er to kolonner med Course_Id som primærnøkkel.

Lag UTENLANDSKE NØKKEL i SQL

Barnebord: Vi må lage den andre tabellen som en barnetabell. 'Course_ID' og 'Course_Strength' som to kolonner. Imidlertid skal 'Course_ID' være fremmednøkkel.

Trinn 1) Høyreklikk på Tabeller>Ny> Tabell...

Lag UTENLANDSKE NØKKEL i SQL

Trinn 2) Skriv inn to kolonnenavn som 'Course_ID' og 'Course_Strength'. Høyreklikk på 'Course_Id'-kolonnen. Klikk nå på Relasjon.

Lag UTENLANDSKE NØKKEL i SQL

Trinn 3) In 'Forhold med utenlandsk nøkkel,' Klikk 'Legge til'

Lag UTENLANDSKE NØKKEL i SQL

Trinn 4) Klikk på i 'Tabell- og kolonnespesifikasjoner' '...'-ikonet

Lag UTENLANDSKE NØKKEL i SQL

Trinn 5) Velg 'Primærnøkkeltabell' som 'KURS' og den nye tabellen som nå opprettes som 'Foreign Key Table' fra rullegardinmenyen.

Lag UTENLANDSKE NØKKEL i SQL

Trinn 6) 'Primærnøkkeltabell' – Velg 'Course_Id'-kolonnen som 'Primærnøkkeltabell'-kolonnen.

'Foreign Key Table'- Velg 'Course_Id'-kolonnen som 'Foreign Key-tabell'-kolonnen. Klikk OK.

Lag UTENLANDSKE NØKKEL i SQL

Trinn 7) Klikk på Legg til.

Lag UTENLANDSKE NØKKEL i SQL

Trinn 8) Gi tabellnavnet 'Course_Strength' og klikk på OK.

Lag UTENLANDSKE NØKKEL i SQL

Resultat: Vi har satt Foreldre-barn forhold mellom 'Kurs' og 'Course_styrke.'

Lag UTENLANDSKE NØKKEL i SQL

T-SQL: Lag en overordnet-underordnet tabell ved hjelp av T-SQL

Overordnet tabell: Tenk på nytt, vi har en eksisterende overordnet tabell med tabellnavnet "Kurs".

Course_ID og Course_name er to kolonner med Course_Id som primærnøkkel.

Lag en overordnet-barn-tabell ved hjelp av T-SQL

Barnebord: Vi må lage den andre tabellen som den underordnede tabellen med navnet 'Course_Strength_TSQL'.

'Course_ID' og 'Course_Strength' som to kolonner for underordnet tabell Course_Strength_TSQL.' Imidlertid skal 'Course_ID' være fremmednøkkel.

Nedenfor er syntaksen for å lage en tabell med FOREIGN KEY

Syntaks:

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

Her er en beskrivelse av parameterne ovenfor:

  • childTable er navnet på tabellen som skal opprettes.
  • column_1, column_2- kolonnene som skal legges til i tabellen.
  • fkey_name- navnet på den fremmednøkkelbegrensningen som skal opprettes.
  • child_column1, child_column2...child_column_n- navnet på chidTable-kolonner som refererer til primærnøkkelen i parentTable.
  • parentTable - navnet på den overordnede tabellen hvis nøkkel skal refereres til i den underordnede tabellen.
  • parent_column1, parent_column2, … parent_column3- kolonnene som utgjør primærnøkkelen til overordnet tabell.
  • PÅ SLETT. En valgfri parameter. Den spesifiserer hva som skjer med barnedataene etter sletting av overordnede data. Noen av verdiene for denne parameteren inkluderer NO ACTION, SET NULL, CASCADE eller SET DEFAULT.
  • PÅ OPPDATERING - En valgfri parameter. Den spesifiserer hva som skjer med underordnede data etter oppdatering av overordnede data. Noen av verdiene for denne parameteren inkluderer NO ACTION, SET NULL, CASCADE eller SET DEFAULT.
  • INGEN HANDLING- brukes sammen med ON DELETE og ON UPDATE. Det betyr at ingenting vil skje med barnedataene etter oppdatering eller sletting av overordnede data.
  • CASCADE- brukes sammen med ON DELETE og ON UPDATE. Barnedataene vil enten bli slettet eller oppdatert etter at overordnede data er slettet eller oppdatert.
  • SET NULL- brukes sammen med ON DELETE og ON UPDATE. Barnet vil bli satt til null etter at overordnet data har blitt oppdatert eller slettet.
  • SET DEFAULT- brukes sammen med ON DELETE og ON UPDATE. Underordnede data vil bli satt til standardverdier etter en oppdatering eller sletting av overordnede data.

La oss se en fremmednøkkel i SQL-eksempel for å lage en tabell med én kolonne som en UTENLANDSK NØKKEL:

Foreign Key i SQL eksempel

Spørsmål:

CREATE TABLE Course_Strength_TSQL
(
Course_ID Int,
Course_Strength Varchar(20) 
CONSTRAINT FK FOREIGN KEY (Course_ID)
REFERENCES COURSE (Course_ID)	
)

Trinn 1) Kjør spørringen ved å klikke på utfør.

Utenlandsk nøkkel i SQL

Resultat: Vi har satt Foreldre-barn forhold mellom 'Kurs' og 'Course_strength_TSQL.'

Utenlandsk nøkkel i SQL

Bruker ALTER TABLE

Nå vil vi lære hvordan du bruker Foreign Key i SQL og legger til Foreign Key i SQL-serveren ved å bruke ALTER TABLE-setningen, vi vil bruke syntaksen gitt nedenfor:

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

Her er en beskrivelse av parameterne som er brukt ovenfor:

  • childTable er navnet på tabellen som skal opprettes.
  • column_1, column_2- kolonnene som skal legges til i tabellen.
  • fkey_name- navnet på den fremmednøkkelbegrensningen som skal opprettes.
  • child_column1, child_column2...child_column_n- navnet på chidTable-kolonner som refererer til primærnøkkelen i parentTable.
  • parentTable - navnet på den overordnede tabellen hvis nøkkel skal refereres til i den underordnede tabellen.
  • parent_column1, parent_column2, … parent_column3- kolonnene som utgjør primærnøkkelen til overordnet tabell.

Endre tabell legg til fremmednøkkel eksempel:

ALTER TABLE department
ADD CONSTRAINT fkey_student_admission
    FOREIGN KEY (admission)
    REFERENCES students (admission);

Vi har laget en fremmednøkkel som heter fkey_student_admission på avdelingstabellen. Denne fremmednøkkelen refererer til opptakskolonnen i elevtabellen.

Eksempel på forespørsel UTENLANDSK NØKKEL

Først, la oss se våre overordnede tabelldata, KURS.

Spørsmål:

SELECT * from COURSE;

Eksempel på forespørsel UTENLANDSK NØKKEL

La oss nå sette inn en rad i Child-tabellen: 'Course_strength_TSQL.'

Vi vil prøve å sette inn to typer rader

  1. Den første typen, som Course_Id i underordnet tabell vil eksistere for i Course_Id for Parent-tabellen. dvs. Course_Id = 1 og 2
  2. Den andre typen, som Course_Id i underordnet tabell ikke eksisterer for i Course_Id for Parent-tabellen. dvs. Course_Id = 5

Spørsmål:

Insert into COURSE_STRENGTH values (1,'SQL');
Insert into COURSE_STRENGTH values (2,'Python');
Insert into COURSE_STRENGTH values (5,'PERL');

Eksempel på forespørsel UTENLANDSK NØKKEL

Resultat: La oss kjøre spørringen sammen for å se tabellen over foreldre og barn

Rad med Course_ID 1 og 2 finnes i Course_styrke-tabellen. Mens Course_ID 5 er et unntak.

Eksempel på forespørsel UTENLANDSK NØKKEL

Sammendrag

  • Hver verdi av fremmednøkkel må være en del av Primærnøkkel av andre bord.
  • Ocuco MySQL Foreign Key kan referere til en annen kolonne i samme tabell. Denne referansen er kjent som en selvreferanse.
  • SQL Foreign Key Constraint : brukes til å sikre koblingene mellom tabeller og ugyldige data som skal settes inn i Foreign Key-kolonnen.
  • Du kan opprette en fremmednøkkel ved å bruke Lag tabell, Endre tabell eller SQL Server Management Studio.
  • Her er forskjellen mellom primærnøkkel vs utenlandsk nøkkel: Klikk her