SQL UDENLANDSKE NØGLE: Sådan opretter du i SQL Server med eksempel
Hvad er en UDENLANDSKE NØGLE?
A Fremmed nøgle giver en måde at håndhæve referentiel integritet i SQL Server. Med enkle ord sikrer fremmednøgle, at værdier i en tabel skal være til stede i en anden tabel.
Regler for UDENLANDSKE NØGLE
- NULL er tilladt i SQL fremmednøgle.
- Tabellen, der refereres til, kaldes forældretabellen
- Tabellen med Foreign Key i SQL kaldes Child Table.
- SQL Foreign Key i den underordnede tabel refererer til den primære nøgle i den overordnede tabel.
- Dette forældre-barn-forhold håndhæver reglen, der er kendt som "Referentiel Integrity".
Nedenstående fremmednøgle i SQL eksempel med diagram opsummerer alle ovenstående punkter for FOREIGN KEY

Sådan opretter du UDENLANDSKE NØGLE i SQL
Vi kan oprette en Fremmed nøgle i SQL server i 2 måder:
- SQL Server Management Studio
- T-SQL
SQL Server Management Studio
Overordnet tabel: Lad os sige, at vi har en eksisterende overordnet tabel som "Kursus". Course_ID og Course_name er to kolonner med Course_Id som primær nøgle.
Børnebord: Vi skal oprette den anden tabel som en undertabel. 'Course_ID' og 'Course_Strength' som to kolonner. Dog skal 'Course_ID' være fremmednøgle.
Trin 1) Højreklik på Tabeller>Ny>Tabel...
Trin 2) Indtast to kolonnenavn som 'Course_ID' og 'Course_Strength'. Højreklik på 'Course_Id'-kolonnen. Klik nu på Relationship.
Trin 3) In 'Udenlandske nøgleforhold,' Klik 'Tilføje'
Trin 4) Klik på i 'Tabel- og kolonnespecifikationer' '...' ikon
Trin 5) Vælg 'Primær nøgletabel' som 'KURSE' og den nye tabel, der nu oprettes som 'Udlandsk nøgletabel' fra rullemenuen.
Trin 6) 'Primær nøgletabel' – Vælg kolonnen 'Course_Id' som kolonnen 'Primær nøgletabel'.
'Foreign Key Table'- Vælg kolonnen 'Course_Id' som kolonnen 'Foreign Key table'. Klik på OK.
Trin 7) Klik på Tilføj.
Trin 8) Angiv tabellens navn som 'Course_Strength' og klik på OK.
Resultat: Vi har sat Forælder-barn forhold mellem 'Rute' og 'Kursusstyrke.'
T-SQL: Opret en overordnet-underordnet tabel ved hjælp af T-SQL
Overordnet tabel: Genovervej, vi har en eksisterende overordnet tabel med tabelnavn som 'Kursus'.
Course_ID og Course_name er to kolonner med Course_Id som primær nøgle.
Børnebord: Vi skal oprette den anden tabel som den underordnede tabel med navnet 'Course_Strength_TSQL'.
'Course_ID' og 'Course_Strength' som to kolonner for underordnet tabel Course_Strength_TSQL.' Dog skal 'Course_ID' være fremmednøgle.
Nedenfor er syntaksen til at oprette en tabel 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 af ovenstående parametre:
- childTable er navnet på den tabel, der skal oprettes.
- column_1, column_2- de kolonner, der skal tilføjes til tabellen.
- fkey_name- navnet på den fremmednøglebegrænsning, der skal oprettes.
- child_column1, child_column2...child_column_n- navnet på chidTable-kolonner, der refererer til den primære nøgle i parentTable.
- parentTable- navnet på den overordnede tabel, hvis nøgle der skal refereres til i den underordnede tabel.
- parent_column1, parent_column2, … parent_column3- de kolonner, der udgør den primære nøgle i den overordnede tabel.
- PÅ SLET. En valgfri parameter. Den specificerer, hvad der sker med underordnede data efter sletning af overordnede data. Nogle af værdierne for denne parameter inkluderer NO ACTION, SET NULL, CASCADE eller SET DEFAULT.
- ON UPDATE- En valgfri parameter. Det specificerer, hvad der sker med de underordnede data efter opdatering af de overordnede data. Nogle af værdierne for denne parameter inkluderer NO ACTION, SET NULL, CASCADE eller SET DEFAULT.
- INGEN HANDLING- bruges sammen med ON SLET og ON UPDATE. Det betyder, at der ikke sker noget med børnedataene efter opdatering eller sletning af forældredata.
- CASCADE- bruges sammen med ON DELETE og ON UPDATE. De underordnede data vil enten blive slettet eller opdateret, efter at forældredataene er blevet slettet eller opdateret.
- SET NULL- bruges sammen med ON DELETE og ON UPDATE. Barnet indstilles til null, efter at forældredataene er blevet opdateret eller slettet.
- SET DEFAULT- bruges sammen med ON DELETE og ON UPDATE. De underordnede data vil blive sat til standardværdier efter en opdatering eller sletning af overordnede data.
Lad os se en fremmednøgle i SQL eksempel for at oprette en tabel med en kolonne som en UDENLANDSKE NØGLE:
Foreign Key i SQL eksempel
Forespørgsel:
CREATE TABLE Course_Strength_TSQL ( Course_ID Int, Course_Strength Varchar(20) CONSTRAINT FK FOREIGN KEY (Course_ID) REFERENCES COURSE (Course_ID) )
Trin 1) Kør forespørgslen ved at klikke på udfør.
Resultat: Vi har sat Forælder-barn forhold mellem 'Rute' og 'Course_styrke_TSQL.'
Brug af ALTER TABLE
Nu lærer vi, hvordan man bruger Foreign Key i SQL og tilføjer Foreign Key i SQL-serveren ved hjælp af ALTER TABLE-sætningen, vi vil bruge syntaksen 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 af de anvendte parametre ovenfor:
- childTable er navnet på den tabel, der skal oprettes.
- column_1, column_2- de kolonner, der skal tilføjes til tabellen.
- fkey_name- navnet på den fremmednøglebegrænsning, der skal oprettes.
- child_column1, child_column2...child_column_n- navnet på chidTable-kolonner, der refererer til den primære nøgle i parentTable.
- parentTable- navnet på den overordnede tabel, hvis nøgle der skal refereres til i den underordnede tabel.
- parent_column1, parent_column2, … parent_column3- de kolonner, der udgør den primære nøgle i den overordnede tabel.
Eksempel på ændring af tabel tilføj udenlandsk nøgle:
ALTER TABLE department ADD CONSTRAINT fkey_student_admission FOREIGN KEY (admission) REFERENCES students (admission);
Vi har oprettet en fremmednøgle ved navn fkey_student_admission på afdelingstabellen. Denne fremmednøgle refererer til adgangskolonnen i elevtabellen.
Eksempel forespørgsel UDENLANDSKE NØGLE
Lad os først se vores overordnede tabeldata, KURSUS.
Forespørgsel:
SELECT * from COURSE;
Lad os nu indsætte en række i underordnet tabel: 'Course_styrke_TSQL.'
Vi vil forsøge at indsætte to typer rækker
- Den første type, for hvilken Course_Id i den underordnede tabel vil eksistere i Course_Id i den overordnede tabel. dvs. Course_Id = 1 og 2
- Den anden type, for hvilken Course_Id i den underordnede tabel ikke findes i Course_Id i Parent-tabellen. dvs. Course_Id = 5
Forespørgsel:
Insert into COURSE_STRENGTH values (1,'SQL'); Insert into COURSE_STRENGTH values (2,'Python'); Insert into COURSE_STRENGTH values (5,'PERL');
Resultat: Lad os køre forespørgslen sammen for at se vores forældre- og barn-tabel
Række med Course_ID 1 og 2 findes i Course_styrke-tabellen. Mens Course_ID 5 er en undtagelse.
Resumé
- Hver værdi af fremmed nøgle skal være en del af Primærnøgle af andre borde.
- MySQL Fremmednøgle kan referere til en anden kolonne i samme tabel. Denne reference er kendt som en selvreference.
- SQL Foreign Key Constraint : bruges til at sikre links mellem tabeller og ugyldige data, der skal indsættes i Foreign Key-kolonnen.
- Du kan oprette en fremmednøgle ved at bruge Create Table, Change Table eller SQL Server Management Studio.
- Her er forskellen mellem primær nøgle vs udenlandsk nøgle: Klik her