SQL IDEGEN KULCS: Hogyan készítsünk SQL Serverben példával
Mi az IDEGEN KULCS?
A Idegen kulcs módot biztosít a hivatkozási integritás érvényesítésére az SQL Serveren belül. Egyszerűen fogalmazva, az idegen kulcs biztosítja, hogy az egyik táblában lévő értékek jelen legyenek egy másik táblában.
IDEGEN KULCS szabályai
- A NULL megengedett az SQL idegen kulcsban.
- A hivatkozott táblázat neve szülőtábla
- Az SQL-ben az idegen kulcsot tartalmazó táblát Child Table-nak nevezik.
- Az SQL idegen kulcs a gyermek táblában a szülő tábla elsődleges kulcsára hivatkozik.
- Ez a szülő-gyermek kapcsolat érvényesíti a „Referenciális” néven ismert szabályt Integrity. "
A lenti idegen kulcs az SQL-ben példa diagrammal összefoglalja a FOREIGN KEY összes fenti pontját

Hogyan hozzunk létre IDEGEN KULCSOT SQL-ben
Létrehozhatunk a Idegen kulcs SQL szerveren belül 2 mód:
- SQL Server Management Studio
- t-sql
SQL Server Management Studio
Szülő táblázat: Tegyük fel, hogy van egy meglévő szülői táblázatunk "tanfolyamként". A kurzus_azonosítója és a kurzus_neve két oszlop, amelyek elsődleges kulcsa a Course_Id.
Gyermek asztal: A második táblát gyermektáblaként kell létrehoznunk. „Course_ID” és „Course_strength” két oszlopként. A 'Course_ID' azonban idegen kulcs.
Step 1) Kattintson jobb gombbal a Táblázatok> Új> Táblázat…
Step 2) Adjon meg két oszlopnevet: „Course_ID” és „Course_strength”. Kattintson a jobb gombbal a „Course_Id” oszlopra. Most kattintson a Kapcsolat elemre.
Step 3) In „Külföldi kulcsú kapcsolat,' Kattintson "Hozzáadás"
Step 4) A „Táblázat és oszlop specifikációi” részben kattintson a gombra '…' ikon
Step 5) A legördülő menüből válassza ki az „Elsődleges kulcstáblázatot” „KURZUS”-ként, és az új táblát „Idegen kulcsok táblázataként” hozzuk létre.
Step 6) „Elsődleges kulcstábla” – Válassza ki a „Course_Id” oszlopot „Primary Key table” oszlopként.
„Foreign Key Table” – Válassza ki a „Course_Id” oszlopot „Foreign Key table” oszlopként. Kattintson az OK gombra.
Step 7) Kattints a Add.
Step 8) Adja meg a táblázat nevét 'Course_strength'-ként, és kattintson a gombra OK.
Eredmény: Beállítottuk a Szülő-gyermek kapcsolatot 'Tanfolyam' és a "Curse_strength."
T-SQL: Hozzon létre egy szülő-gyermek táblát T-SQL használatával
Szülő táblázat: Gondolja át, van egy szülőtáblánk, amelynek a táblázat neve „Tanfolyam”.
A kurzus_azonosítója és a kurzus_neve két oszlop, amelyek elsődleges kulcsa a Course_Id.
Gyermek asztal: Létre kell hoznunk a második táblát gyermektáblaként 'Course_Strength_TSQL' néven.
"Course_ID" és "Course_strength" két oszlopként a Course_Strength_TSQL alárendelt táblához.' A 'Course_ID' azonban idegen kulcs.
Az alábbiakban bemutatjuk a FORIGN KEY-vel létrehozandó táblázat szintaxisát
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 } ] );
Itt található a fenti paraméterek leírása:
- A childTable a létrehozandó tábla neve.
- oszlop_1, oszlop_2- a táblázathoz hozzáadandó oszlopok.
- fkey_name- a létrehozandó idegen kulcs megszorítás neve.
- gyermek_oszlop1, gyermek_oszlop2…gyermek_oszlop_n – a chidTable oszlopok neve, amelyek az elsődleges kulcsra hivatkoznak a szülőtáblában.
- parentTable – annak a szülőtáblának a neve, amelynek kulcsára hivatkozni kell az utódtáblában.
- szülő_oszlop1, szülő_oszlop2, … szülő_oszlop3- a szülőtábla elsődleges kulcsát alkotó oszlopok.
- TÖRLÉSRE. Opcionális paraméter. Meghatározza, hogy mi történik a gyermekadatokkal a szülő adatok törlése után. A paraméter egyes értékei közé tartozik a NO ACTION, SET NULL, CASCADE vagy SET DEFAULT.
- ON UPDATE – opcionális paraméter. Meghatározza, hogy mi történik a gyermekadatokkal a szülőadatok frissítése után. A paraméter egyes értékei közé tartozik a NO ACTION, SET NULL, CASCADE vagy SET DEFAULT.
- NINCS MŰVELET – az ON DELETE és ON UPDATE funkcióval együtt használható. Ez azt jelenti, hogy a szülő adatok frissítése vagy törlése után semmi nem történik a gyermekadatokkal.
- CASCADE – az ON DELETE és ON UPDATE funkcióval együtt használható. A gyermekadatok a szülői adatok törlését vagy frissítését követően törlődnek vagy frissülnek.
- SET NULL- az ON DELETE és ON UPDATE funkcióval együtt használatos. A szülőadatok frissítése vagy törlése után a gyermek nullára lesz állítva.
- SET DEFAULT – az ON DELETE és ON UPDATE funkcióval együtt használatos. A szülőadatok frissítése vagy törlése után a gyermekadatok alapértelmezett értékekre állnak be.
Lássunk egy idegen kulcsot az SQL-ben egy olyan tábla létrehozásához, amelynek egy oszlopa IDEGEN KULCS:
Idegen kulcs SQL példában
Keresés:
CREATE TABLE Course_Strength_TSQL ( Course_ID Int, Course_Strength Varchar(20) CONSTRAINT FK FOREIGN KEY (Course_ID) REFERENCES COURSE (Course_ID) )
Step 1) Futtassa a lekérdezést a végrehajtás gombra kattintva.
Eredmény: Beállítottuk a Szülő-gyermek kapcsolatot 'Tanfolyam' és a 'Course_strength_TSQL.'
Az ALTER TABLE használata
Most megtanuljuk, hogyan kell az idegen kulcsot használni az SQL-ben, és hogyan kell hozzáadni az idegen kulcsot az SQL szerverhez az ALTER TABLE utasítással, az alábbiakban megadott szintaxist fogjuk használni:
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);
Itt található a fent használt paraméterek leírása:
- A childTable a létrehozandó tábla neve.
- oszlop_1, oszlop_2- a táblázathoz hozzáadandó oszlopok.
- fkey_name- a létrehozandó idegen kulcs megszorítás neve.
- gyermek_oszlop1, gyermek_oszlop2…gyermek_oszlop_n – a chidTable oszlopok neve, amelyek az elsődleges kulcsra hivatkoznak a szülőtáblában.
- parentTable – annak a szülőtáblának a neve, amelynek kulcsára hivatkozni kell az utódtáblában.
- szülő_oszlop1, szülő_oszlop2, … szülő_oszlop3- a szülőtábla elsődleges kulcsát alkotó oszlopok.
Példa a tábla módosítására idegen kulcs hozzáadására:
ALTER TABLE department ADD CONSTRAINT fkey_student_admission FOREIGN KEY (admission) REFERENCES students (admission);
Létrehoztunk egy fkey_student_admission nevű idegen kulcsot a tanszéki táblán. Ez az idegen kulcs a hallgatói táblázat felvételi oszlopára hivatkozik.
Példa lekérdezés IDEGEN KULCS
Először is lássuk a szülőtáblázatunk adatait, TERMÉSZET.
Keresés:
SELECT * from COURSE;
Most szúrjunk be egy sort a gyermektáblázatba: 'Course_strength_TSQL.'
Megpróbálunk kétféle sort beszúrni
- Az első típus, amelyhez a Course_Id az utódtáblában a szülőtábla Course_Id-jében fog létezni. azaz Course_Id = 1 és 2
- A második típus, amelyhez a Course_Id a gyermek táblában nem létezik a szülő táblában a Course_Id. azaz Course_Id = 5
Keresés:
Insert into COURSE_STRENGTH values (1,'SQL'); Insert into COURSE_STRENGTH values (2,'Python'); Insert into COURSE_STRENGTH values (5,'PERL');
Eredmény: Futtassuk együtt a lekérdezést, hogy megtekintsük a szülő és gyermek táblázatunkat
A Course_strength táblában létezik Course_ID 1 és 2 sor. Ezzel szemben a Course_ID 5 kivétel.
Összegzésként
- Az idegen kulcs minden értékének a részét kell képeznie Elsődleges kulcs más táblázatok közül.
- A MySQL Az idegen kulcs hivatkozhat ugyanabban a táblázatban egy másik oszlopra. Ezt a hivatkozást önhivatkozásnak nevezik.
- SQL idegenkulcs-korlátozás: a táblák és az idegen kulcs oszlopba beszúrandó érvénytelen adatok közötti kapcsolatok biztosítására szolgál.
- Létrehozhat idegen kulcsot a Create Table, Alter Table vagy a Táblázat létrehozása vagy az Alter Table segítségével SQL Server Management Studio.
- Itt van a különbség az elsődleges kulcs és az idegen kulcs között: Kattints ide