SQL FOREIGN KEY: Kako stvoriti u SQL Serveru s primjerom

Što je FOREIGN KEY?

A Strani kljuc pruža način nametanja referentnog integriteta unutar SQL Servera. Jednostavnim riječima, strani ključ osigurava da vrijednosti u jednoj tablici moraju biti prisutne u drugoj tablici.

Pravila za FOREIGN KEY

  • NULL je dopušten u SQL stranom ključu.
  • Tablica na koju se upućuje naziva se roditeljska tablica
  • Tablica s vanjskim ključem u SQL-u naziva se Child Table.
  • SQL vanjski ključ u podređenoj tablici upućuje na primarni ključ u nadređenoj tablici.
  • Ovaj odnos roditelj-dijete provodi pravilo koje je poznato kao “Referentni Integrity".

Donji primjer stranog ključa u SQL-u s dijagramom sažima sve gore navedene točke za FOREIGN KEY

Pravila za FOREIGN KEY u SQL-u
Kako radi vanjski ključ

Kako stvoriti FOREIGN KEY u SQL-u

Možemo stvoriti a Strani kljuc u SQL poslužitelju 2 načina:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

Nadređena tablica: Recimo, imamo postojeću roditeljsku tablicu kao 'Tečaj'. Course_ID i Course_name su dva stupca s Course_Id kao primarnim ključem.

Stvorite FOREIGN KEY u SQL-u

Podređena tablica: Moramo stvoriti drugu tablicu kao podređenu tablicu. 'Course_ID' i 'Course_Strength' kao dva stupca. Međutim, 'Course_ID' će biti vanjski ključ.

Korak 1) Desni klik na Tables>New> Table…

Stvorite FOREIGN KEY u SQL-u

Korak 2) Unesite dva naziva stupaca kao 'Course_ID' i 'Course_Strength.' Desni klik na stupac 'Course_Id'. Sada kliknite na Odnos.

Stvorite FOREIGN KEY u SQL-u

Korak 3) In 'Foreign Key Relationship,' Kliknite 'Dodati'

Stvorite FOREIGN KEY u SQL-u

Korak 4) U 'Specifikacija tablice i stupca' kliknite na ikona "…".

Stvorite FOREIGN KEY u SQL-u

Korak 5) Odaberite 'Tablica primarnog ključa' kao 'TEČAJ', a novu tablicu koja se sada stvara kao 'Tablicu stranog ključa' s padajućeg izbornika.

Stvorite FOREIGN KEY u SQL-u

Korak 6) 'Tablica primarnog ključa' – Odaberite stupac 'Course_Id' kao stupac 'Tablica primarnog ključa'.

'Tablica stranih ključeva'- Odaberite stupac 'Course_Id' kao stupac 'Tablica stranih ključeva'. Pritisnite OK.

Stvorite FOREIGN KEY u SQL-u

Korak 7) Kliknite na Dodaj.

Stvorite FOREIGN KEY u SQL-u

Korak 8) Dajte tablici naziv 'Course_Strength' i kliknite na OK.

Stvorite FOREIGN KEY u SQL-u

Rezultat: Postavili smo odnos roditelj-dijete između 'Tečaj' i 'Course_strength.'

Stvorite FOREIGN KEY u SQL-u

T-SQL: Stvorite tablicu roditelj-dijete koristeći T-SQL

Nadređena tablica: Ponovno razmislite, imamo postojeću matičnu tablicu s nazivom tablice 'Tečaj'.

Course_ID i Course_name su dva stupca s Course_Id kao primarnim ključem.

Stvorite tablicu roditelj-dijete koristeći T-SQL

Podređena tablica: Moramo stvoriti drugu tablicu kao podređenu tablicu s nazivom 'Course_Strength_TSQL.'

'Course_ID' i 'Course_Strength' kao dva stupca za podređenu tablicu Course_Strength_TSQL.' Međutim, 'Course_ID' će biti vanjski ključ.

Ispod je sintaksa za stvaranje tablice sa FOREIGN KEY

Sintaksa:

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

Ovdje je opis gore navedenih parametara:

  • childTable je naziv tablice koju treba kreirati.
  • stupac_1, stupac_2- stupci koji se dodaju u tablicu.
  • fkey_name- ime ograničenja stranog ključa koje treba stvoriti.
  • child_column1, child_column2…child_column_n- naziv stupaca chidTable za referencu na primarni ključ u parentTable.
  • parentTable- naziv nadređene tablice čiji ključ treba referencirati u podređenoj tablici.
  • parent_column1, parent_column2, … parent_column3- stupci koji čine primarni ključ nadređene tablice.
  • NA BRISANJE. Neobavezni parametar. Određuje što se događa s podređenim podacima nakon brisanja nadređenih podataka. Neke od vrijednosti za ovaj parametar uključuju NO ACTION, SET NULL, CASCADE ili SET DEFAULT.
  • PRI AŽURIRANJU - Neobavezni parametar. Određuje što se događa s podređenim podacima nakon ažuriranja nadređenih podataka. Neke od vrijednosti za ovaj parametar uključuju NO ACTION, SET NULL, CASCADE ili SET DEFAULT.
  • NEMA RADNJE - koristi se zajedno s ON DELETE i ON UPDATE. To znači da se ništa neće dogoditi podređenim podacima nakon ažuriranja ili brisanja nadređenih podataka.
  • CASCADE- koristi se zajedno s ON DELETE i ON UPDATE. Podređeni podaci bit će izbrisani ili ažurirani nakon što se nadređeni podaci izbrišu ili ažuriraju.
  • SET NULL- koristi se zajedno s ON DELETE i ON UPDATE. Podređeni će biti postavljen na null nakon što se nadređeni podaci ažuriraju ili izbrišu.
  • SET DEFAULT - koristi se zajedno s ON DELETE i ON UPDATE. Podređeni podaci bit će postavljeni na zadane vrijednosti nakon ažuriranja ili brisanja nadređenih podataka.

Pogledajmo primjer stranog ključa u SQL-u za stvaranje tablice s jednim stupcem kao STRANIM KLJUČEM:

Primjer stranog ključa u SQL-u

upita:

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

Korak 1) Pokrenite upit klikom na Izvrši.

Strani ključ u SQL-u

Rezultat: Postavili smo odnos roditelj-dijete između 'Tečaj' i 'Course_strength_TSQL.'

Strani ključ u SQL-u

Korištenje ALTER TABLE

Sada ćemo naučiti kako koristiti strani ključ u SQL-u i dodati strani ključ u SQL poslužitelj koristeći naredbu ALTER TABLE, koristit ćemo sintaksu danu u nastavku:

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

Ovdje je opis gore korištenih parametara:

  • childTable je naziv tablice koju treba kreirati.
  • stupac_1, stupac_2- stupci koji se dodaju u tablicu.
  • fkey_name- ime ograničenja stranog ključa koje treba stvoriti.
  • child_column1, child_column2…child_column_n- naziv stupaca chidTable za referencu na primarni ključ u parentTable.
  • parentTable- naziv nadređene tablice čiji ključ treba referencirati u podređenoj tablici.
  • parent_column1, parent_column2, … parent_column3- stupci koji čine primarni ključ nadređene tablice.

Alter table add Foreign Key primjer:

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

Stvorili smo strani ključ pod nazivom fkey_student_admission na tablici odjela. Ovaj strani ključ upućuje na stupac upisa u tablici učenika.

Primjer upita FOREIGN KEY

Prvo, pogledajmo naše podatke roditeljske tablice, COURSE.

upita:

SELECT * from COURSE;

Primjer upita FOREIGN KEY

Umetnimo sada neki redak u tablicu Child: 'Course_strength_TSQL.'

Pokušat ćemo umetnuti dvije vrste redaka

  1. Prvi tip, za koji će Course_Id u podređenoj tablici postojati u Course_Id nadređene tablice. tj. Course_Id = 1 i 2
  2. Drugi tip, za koji Course_Id u podređenoj tablici ne postoji u Course_Id nadređene tablice. tj. Course_Id = 5

upita:

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

Primjer upita FOREIGN KEY

Rezultat: Pokrenimo upit zajedno da bismo vidjeli našu tablicu Roditelj i Dijete

Redak s Course_ID 1 i 2 postoji u tablici Course_strength. Dok je Course_ID 5 iznimka.

Primjer upita FOREIGN KEY

rezime

  • Svaka vrijednost stranog ključa mora biti dio Glavni ključ drugih tablica.
  • Korištenje električnih romobila ističe MySQL Strani ključ može referencirati na drugi stupac u istoj tablici. Ova referenca je poznata kao samoreferenca.
  • SQL ograničenje stranog ključa : koristi se za osiguranje veza između tablica i nevažećih podataka koji se umeću u stupac stranog ključa.
  • Strani ključ možete stvoriti koristeći Create Table, Alter Table ili SQL Server Management Studio.
  • Evo razlike između primarnog i stranog ključa: Klikni ovdje