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

Regler för FOREIGN KEY i SQL
Hur utländsk nyckel fungerar

Hur man skapar FOREIGN KEY i SQL

Vi kan skapa en Främmande nyckel i SQL-server i 2 sätt:

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

Skapa FOREIGN KEY i SQL

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

Skapa FOREIGN KEY i SQL

Steg 2) Ange två kolumner som 'Course_ID' och 'Course_Strength'. Högerklicka på kolumnen 'Course_Id'. Klicka nu på Relationship.

Skapa FOREIGN KEY i SQL

Steg 3) In 'Förhållande med främmande nyckel,' Klick 'Lägg till'

Skapa FOREIGN KEY i SQL

Steg 4) Klicka på i "Tabell- och kolumnspecifikation". "..."-ikonen

Skapa FOREIGN KEY i SQL

Steg 5) Välj 'Primär nyckeltabell' som 'KURS' och den nya tabellen som nu skapas som 'Utländsk nyckeltabell' från rullgardinsmenyn.

Skapa FOREIGN KEY i SQL

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.

Skapa FOREIGN KEY i SQL

Steg 7) Klicka på Lägg till.

Skapa FOREIGN KEY i SQL

Steg 8) Ge tabellens namn som 'Course_Strength' och klicka på OK.

Skapa FOREIGN KEY i SQL

Resultat: Vi har satt Förälder-barn-relationen mellan 'Kurs' och 'Kursstyrka.'

Skapa FOREIGN KEY i SQL

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.

Skapa en överordnad-underordnad tabell med T-SQL

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.

Utländsk nyckel i SQL

Resultat: Vi har satt Förälder-barn-relationen mellan 'Kurs' och 'Course_styrkth_TSQL.'

Utländsk nyckel i SQL

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;

Exempelfråga UTLÄNDSK NYCKEL

Låt oss nu infoga en rad i Child-tabellen: 'Course_styrkth_TSQL.'

Vi kommer att försöka infoga två typer av rader

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

Exempelfråga UTLÄNDSK NYCKEL

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.

Exempelfråga UTLÄNDSK NYCKEL

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