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

Kako stvoriti FOREIGN KEY u SQL-u
Možemo stvoriti a Strani kljuc u SQL poslužitelju 2 načina:
- SQL Server Management Studio
- 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.
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…
Korak 2) Unesite dva naziva stupaca kao 'Course_ID' i 'Course_Strength.' Desni klik na stupac 'Course_Id'. Sada kliknite na Odnos.
Korak 3) In 'Foreign Key Relationship,' Kliknite 'Dodati'
Korak 4) U 'Specifikacija tablice i stupca' kliknite na ikona "…".
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.
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.
Korak 7) Kliknite na Dodaj.
Korak 8) Dajte tablici naziv 'Course_Strength' i kliknite na OK.
Rezultat: Postavili smo odnos roditelj-dijete između 'Tečaj' i 'Course_strength.'
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.
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.
Rezultat: Postavili smo odnos roditelj-dijete između 'Tečaj' i 'Course_strength_TSQL.'
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;
Umetnimo sada neki redak u tablicu Child: 'Course_strength_TSQL.'
Pokušat ćemo umetnuti dvije vrste redaka
- Prvi tip, za koji će Course_Id u podređenoj tablici postojati u Course_Id nadređene tablice. tj. Course_Id = 1 i 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');
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.
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