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

A FORIGN KEY szabályai SQL-ben
Hogyan működik az idegen kulcs

Hogyan hozzunk létre IDEGEN KULCSOT SQL-ben

Létrehozhatunk a Idegen kulcs SQL szerveren belül 2 mód:

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

Hozzon létre IDEGEN KULCSOT SQL-ben

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…

Hozzon létre IDEGEN KULCSOT SQL-ben

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.

Hozzon létre IDEGEN KULCSOT SQL-ben

Step 3) In „Külföldi kulcsú kapcsolat,' Kattintson "Hozzáadás"

Hozzon létre IDEGEN KULCSOT SQL-ben

Step 4) A „Táblázat és oszlop specifikációi” részben kattintson a gombra '…' ikon

Hozzon létre IDEGEN KULCSOT SQL-ben

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.

Hozzon létre IDEGEN KULCSOT SQL-ben

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.

Hozzon létre IDEGEN KULCSOT SQL-ben

Step 7) Kattints a Add.

Hozzon létre IDEGEN KULCSOT SQL-ben

Step 8) Adja meg a táblázat nevét 'Course_strength'-ként, és kattintson a gombra OK.

Hozzon létre IDEGEN KULCSOT SQL-ben

Eredmény: Beállítottuk a Szülő-gyermek kapcsolatot 'Tanfolyam' és a "Curse_strength."

Hozzon létre IDEGEN KULCSOT SQL-ben

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.

Hozzon létre egy szülő-gyermek táblát T-SQL használatával

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.

Idegen kulcs az SQL-ben

Eredmény: Beállítottuk a Szülő-gyermek kapcsolatot 'Tanfolyam' és a 'Course_strength_TSQL.'

Idegen kulcs az SQL-ben

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;

Példa lekérdezés IDEGEN KULCS

Most szúrjunk be egy sort a gyermektáblázatba: 'Course_strength_TSQL.'

Megpróbálunk kétféle sort beszúrni

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

Példa lekérdezés IDEGEN KULCS

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.

Példa lekérdezés IDEGEN KULCS

Ö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