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

Saลพmite ovu objavu uz: