SQL FOREIGN KEY: Hur man skapar i SQL Server med exempel
Vad är en UTLÄNDSKNYCKEL?
A Främmande nyckel tillhandahåller ett sätt att upprätthålla referensintegritet inom SQL Server. Med enkla ord säkerställer främmande nyckel att värden i en tabell måste finnas i en annan tabell.
Regler för UTLÄNDSKNYCKEL
- NULL är tillåtet i SQL främmande nyckel.
- Tabellen som det refereras till kallas för överordnade tabellen
- Tabellen med den främmande nyckeln i SQL kallas Child Table.
- Den främmande SQL-nyckeln i den underordnade tabellen refererar till primärnyckeln i den överordnade tabellen.
- Denna förälder-barn-relation upprätthåller regeln som är känd som "referens Integrity. "
Exemplet Below Foreign Key i SQL med diagram sammanfattar alla ovanstående punkter för FOREIGN KEY

Hur man skapar FOREIGN KEY i SQL
Vi kan skapa en Främmande nyckel i SQL-server i 2 sätt:
- SQL Server Management Studio
- T-SQL
SQL Server Management Studio
Föräldratabell: Säg att vi har en befintlig överordnad tabell som "Kurs". Course_ID och Course_name är två kolumner med Course_Id som primärnyckel.
Barnbord: Vi måste skapa den andra tabellen som en underordnad tabell. 'Course_ID' och 'Course_Strength' som två kolumner. Emellertid ska 'Course_ID' vara främmande nyckel.
Steg 1) Högerklicka på Tabeller>Ny> Tabell...
Steg 2) Ange två kolumner som 'Course_ID' och 'Course_Strength'. Högerklicka på kolumnen 'Course_Id'. Klicka nu på Relationship.
Steg 3) In 'Förhållande med främmande nyckel,' Klick 'Lägg till'
Steg 4) Klicka på i "Tabell- och kolumnspecifikation". "..."-ikonen
Steg 5) Välj 'Primär nyckeltabell' som 'KURS' och den nya tabellen som nu skapas som 'Utländsk nyckeltabell' från rullgardinsmenyn.
Steg 6) 'Primary Key Table' – Välj kolumnen 'Course_Id' som kolumn 'Primary Key table'.
'Tabell med utländsk nyckel'- Välj kolumnen 'Course_Id' som kolumn 'Foreign Key table'. Klicka på OK.
Steg 7) Klicka på Lägg till.
Steg 8) Ge tabellens namn som 'Course_Strength' och klicka på OK.
Resultat: Vi har satt Förälder-barn-relationen mellan 'Kurs' och 'Kursstyrka.'
T-SQL: Skapa en överordnad-underordnad tabell med T-SQL
Föräldratabell: Överväg om, vi har en befintlig överordnad tabell med tabellnamnet "Kurs".
Course_ID och Course_name är två kolumner med Course_Id som primärnyckel.
Barnbord: Vi måste skapa den andra tabellen som den underordnade tabellen med namnet 'Course_Strength_TSQL'.
'Course_ID' och 'Course_Strength' som två kolumner för den underordnade tabellen Course_Strength_TSQL.' Emellertid ska 'Course_ID' vara främmande nyckel.
Nedan är syntaxen för att skapa en tabell med 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 } ] );
Här är en beskrivning av ovanstående parametrar:
- childTable är namnet på tabellen som ska skapas.
- kolumn_1, kolumn_2- kolumnerna som ska läggas till i tabellen.
- fkey_name- namnet på den främmande nyckel-restriktionen som ska skapas.
- child_column1, child_column2...child_column_n- namnet på chidTable-kolumner som refererar till primärnyckeln i parentTable.
- parentTable- namnet på den överordnade tabellen vars nyckel ska refereras till i den underordnade tabellen.
- parent_column1, parent_column2, … parent_column3- kolumnerna som utgör primärnyckeln för den överordnade tabellen.
- PÅ DELETE. En valfri parameter. Den anger vad som händer med underordnad data efter radering av överordnad data. Några av värdena för denna parameter inkluderar NO ACTION, SET NULL, CASCADE eller SET DEFAULT.
- PÅ UPPDATERING - En valfri parameter. Den anger vad som händer med underordnade data efter uppdatering av överordnade data. Några av värdena för denna parameter inkluderar NO ACTION, SET NULL, CASCADE eller SET DEFAULT.
- INGEN ÅTGÄRD- används tillsammans med ON DELETE och ON UPDATE. Det betyder att ingenting kommer att hända med barndata efter uppdatering eller radering av överordnad data.
- CASCADE- används tillsammans med ON DELETE och ON UPDATE. Underordnade data kommer antingen att raderas eller uppdateras efter att föräldradata har raderats eller uppdaterats.
- SET NULL- används tillsammans med ON DELETE och ON UPDATE. Barnet kommer att ställas in på null efter att föräldradata har uppdaterats eller tagits bort.
- SET DEFAULT- används tillsammans med ON DELETE och ON UPDATE. Underordnade data kommer att ställas in på standardvärden efter en uppdatering eller radering av överordnad data.
Låt oss se en främmande nyckel i SQL-exempel för att skapa en tabell med en kolumn som en främmande nyckel:
Utländsk nyckel i SQL-exempel
Fråga:
CREATE TABLE Course_Strength_TSQL ( Course_ID Int, Course_Strength Varchar(20) CONSTRAINT FK FOREIGN KEY (Course_ID) REFERENCES COURSE (Course_ID) )
Steg 1) Kör frågan genom att klicka på exekvera.
Resultat: Vi har satt Förälder-barn-relationen mellan 'Kurs' och 'Course_styrkth_TSQL.'
Använder ALTER TABLE
Nu kommer vi att lära oss hur man använder Foreign Key i SQL och lägger till Foreign Key i SQL-servern med hjälp av ALTER TABLE-satsen, vi kommer att använda syntaxen nedan:
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);
Här är en beskrivning av parametrarna som används ovan:
- childTable är namnet på tabellen som ska skapas.
- kolumn_1, kolumn_2- kolumnerna som ska läggas till i tabellen.
- fkey_name- namnet på den främmande nyckel-restriktionen som ska skapas.
- child_column1, child_column2...child_column_n- namnet på chidTable-kolumner som refererar till primärnyckeln i parentTable.
- parentTable- namnet på den överordnade tabellen vars nyckel ska refereras till i den underordnade tabellen.
- parent_column1, parent_column2, … parent_column3- kolumnerna som utgör primärnyckeln för den överordnade tabellen.
Ändra tabell lägg till främmande nyckel exempel:
ALTER TABLE department ADD CONSTRAINT fkey_student_admission FOREIGN KEY (admission) REFERENCES students (admission);
Vi har skapat en främmande nyckel som heter fkey_student_admission på institutionstabellen. Denna främmande nyckel refererar till antagningskolumnen i elevtabellen.
Exempelfråga UTLÄNDSK NYCKEL
Först, låt oss se våra överordnade tabelldata, KURS.
Fråga:
SELECT * from COURSE;
Låt oss nu infoga en rad i Child-tabellen: 'Course_styrkth_TSQL.'
Vi kommer att försöka infoga två typer av rader
- Den första typen, för vilken Course_Id i den underordnade tabellen kommer att finnas i Course_Id i den överordnade tabellen. dvs Course_Id = 1 och 2
- Den andra typen, för vilken Course_Id i den underordnade tabellen inte finns i Course_Id för Parent-tabellen. dvs. Course_Id = 5
Fråga:
Insert into COURSE_STRENGTH values (1,'SQL'); Insert into COURSE_STRENGTH values (2,'Python'); Insert into COURSE_STRENGTH values (5,'PERL');
Resultat: Låt oss köra frågan tillsammans för att se vår överordnade och barn-tabell
Rad med Course_ID 1 och 2 finns i tabellen Course_styrka. Medan Course_ID 5 är ett undantag.
Sammanfattning
- Varje värde på främmande nyckel måste vara en del av Primärnyckel av andra bord.
- Smakämnen MySQL Utländsk nyckel kan referera till en annan kolumn i samma tabell. Denna referens är känd som en självreferens.
- SQL Foreign Key Constraint : används för att säkra länkarna mellan tabeller och ogiltiga data som ska infogas i kolumnen Foreign Key.
- Du kan skapa en främmande nyckel med Skapa tabell, Ändra tabell eller SQL Server Management Studio.
- Här är skillnaden mellan primärnyckel och främmande nyckel: Klicka här