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

Hvordan lage utenlandsk nøkkel i SQL
Vi kan lage en Foreign Key i SQL server i 2 måter:
- SQL Server Management Studio
- 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.
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...
Trinn 2) Skriv inn to kolonnenavn som 'Course_ID' og 'Course_Strength'. Høyreklikk på 'Course_Id'-kolonnen. Klikk nå på Relasjon.
Trinn 3) In 'Forhold med utenlandsk nøkkel,' Klikk 'Legge til'
Trinn 4) Klikk på i 'Tabell- og kolonnespesifikasjoner' '...'-ikonet
Trinn 5) Velg 'Primærnøkkeltabell' som 'KURS' og den nye tabellen som nå opprettes som 'Foreign Key Table' fra rullegardinmenyen.
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.
Trinn 7) Klikk på Legg til.
Trinn 8) Gi tabellnavnet 'Course_Strength' og klikk på OK.
Resultat: Vi har satt Foreldre-barn forhold mellom 'Kurs' og 'Course_styrke.'
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.
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.
Resultat: Vi har satt Foreldre-barn forhold mellom 'Kurs' og 'Course_strength_TSQL.'
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;
La oss nå sette inn en rad i Child-tabellen: 'Course_strength_TSQL.'
Vi vil prøve å sette inn to typer rader
- 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
- 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');
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.
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