CIZÍ KLÍČ SQL: Jak vytvořit na serveru SQL Server s příkladem

Co je CIZÍ KLÍČ?

A Cizí klíč poskytuje způsob vynucení referenční integrity v rámci SQL Server. Jednoduše řečeno, cizí klíč zajišťuje, že hodnoty v jedné tabulce musí být přítomny v jiné tabulce.

Pravidla pro ZAHRANIČNÍ KLÍČ

  • V cizím klíči SQL je povolena hodnota NULL.
  • Odkazovaná tabulka se nazývá nadřazená tabulka
  • Tabulka s cizím klíčem v SQL se nazývá Child Table.
  • Cizí klíč SQL v podřízené tabulce odkazuje na primární klíč v nadřazené tabulce.
  • Tento vztah rodič-dítě vynucuje pravidlo, které je známé jako „Referenční Integrity. "

Níže uvedený příklad cizího klíče v SQL s diagramem shrnuje všechny výše uvedené body pro FOREIGN KEY

Pravidla pro FOREIGN KEY v SQL
Jak funguje cizí klíč

Jak vytvořit CIZÍ KLÍČ v SQL

Můžeme vytvořit a Cizí klíč v SQL serveru v 2 způsoby:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

Nadřazený stůl: Řekněme, že máme existující nadřazenou tabulku jako „kurz“. Course_ID a Course_name jsou dva sloupce s Course_Id jako primárním klíčem.

Vytvořte CIZÍ KLÍČ v SQL

Dětský stůl: Musíme vytvořit druhou tabulku jako podřízenou tabulku. 'Course_ID' a 'Course_Strength' jako dva sloupce. 'Course_ID' však musí být cizí klíč.

Krok 1) Klikněte pravým tlačítkem na Tabulky>Nový> Tabulka…

Vytvořte CIZÍ KLÍČ v SQL

Krok 2) Zadejte dva názvy sloupců jako 'Course_ID' a 'Course_Strength'. Klikněte pravým tlačítkem na sloupec 'Course_Id'. Nyní klikněte na Vztah.

Vytvořte CIZÍ KLÍČ v SQL

Krok 3) In 'Zahraniční klíčový vztah,, Klikněte 'Přidat'

Vytvořte CIZÍ KLÍČ v SQL

Krok 4) V 'Specifikace tabulky a sloupce' klikněte na ikona „…“.

Vytvořte CIZÍ KLÍČ v SQL

Krok 5) Z rozevírací nabídky vyberte „Tabulka primárních klíčů“ jako „KURZ“ a nově vytvářený stůl jako „Tabulka cizích klíčů“.

Vytvořte CIZÍ KLÍČ v SQL

Krok 6) 'Tabulka primárních klíčů' – Jako sloupec 'Tabulka primárních klíčů' vyberte sloupec 'Course_Id'.

'Tabulka cizích klíčů'- Vyberte sloupec 'Course_Id' jako sloupec 'Tabulka cizích klíčů'. Klepněte na tlačítko OK.

Vytvořte CIZÍ KLÍČ v SQL

Krok 7) Klikněte na Přidat.

Vytvořte CIZÍ KLÍČ v SQL

Krok 8) Zadejte název tabulky jako 'Course_Strength' a klikněte na OK.

Vytvořte CIZÍ KLÍČ v SQL

Výsledek: Nastavili jsme vztah rodič-dítě mezi 'Chod' si 'Síla_kurzu.'

Vytvořte CIZÍ KLÍČ v SQL

T-SQL: Vytvořte tabulku Rodič-potomek pomocí T-SQL

Nadřazený stůl: Znovu zvažte, máme existující nadřazenou tabulku s názvem tabulky jako 'Kurz.

Course_ID a Course_name jsou dva sloupce s Course_Id jako primárním klíčem.

Vytvořte tabulku nadřazený-podřízený pomocí T-SQL

Dětský stůl: Musíme vytvořit druhou tabulku jako podřízenou tabulku s názvem 'Course_Strength_TSQL.'

'Course_ID' a 'Course_Strength' jako dva sloupce pro podřízenou tabulku Course_Strength_TSQL.' 'Course_ID' však musí být cizí klíč.

Níže je uvedena syntaxe pro vytvoření tabulky s FOREIGN KEY

Syntaxe:

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

Zde je popis výše uvedených parametrů:

  • childTable je název tabulky, která má být vytvořena.
  • sloupec_1, sloupec_2 – sloupce, které mají být přidány do tabulky.
  • fkey_name- název omezení cizího klíče, které má být vytvořeno.
  • child_column1, child_column2…child_column_n- název sloupců chidTable, které odkazují na primární klíč v parentTable.
  • parentTable- název nadřazené tabulky, na jejíž klíč se má odkazovat v podřízené tabulce.
  • parent_column1, parent_column2, … parent_column3- sloupce tvořící primární klíč nadřazené tabulky.
  • NA SMAZÁNÍ. Nepovinný parametr. Určuje, co se stane s podřízenými daty po odstranění nadřazených dat. Některé hodnoty tohoto parametru zahrnují NO ACTION, SET NULL, CASCADE nebo SET DEFAULT.
  • ON UPDATE- Volitelný parametr. Určuje, co se stane s podřízenými daty po aktualizaci nadřazených dat. Některé hodnoty tohoto parametru zahrnují NO ACTION, SET NULL, CASCADE nebo SET DEFAULT.
  • NO ACTION – používá se společně s ON DELETE a ON UPDATE. Znamená to, že po aktualizaci nebo smazání nadřazených dat se s podřízenými daty nic nestane.
  • CASCADE- používá se společně s ON DELETE a ON UPDATE. Podřízená data budou buď smazána nebo aktualizována poté, co byla smazána nebo aktualizována nadřazená data.
  • SET NULL- používá se společně s ON DELETE a ON UPDATE. Po aktualizaci nebo smazání nadřazených dat bude dítěti nastaveno null.
  • SET DEFAULT – používá se společně s ON DELETE a ON UPDATE. Po aktualizaci nebo odstranění nadřazených dat budou podřízená data nastavena na výchozí hodnoty.

Podívejme se na cizí klíč v příkladu SQL pro vytvoření tabulky s jedním sloupcem jako cizím klíčem:

Cizí klíč v příkladu SQL

Dotaz:

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

Krok 1) Spusťte dotaz kliknutím na spustit.

Cizí klíč v SQL

Výsledek: Nastavili jsme vztah rodič-dítě mezi 'Chod' si 'Course_strength_TSQL.'

Cizí klíč v SQL

Pomocí ALTER TABLE

Nyní se naučíme, jak používat cizí klíč v SQL a přidat cizí klíč na SQL server pomocí příkazu ALTER TABLE, použijeme syntaxi uvedenou níže:

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

Zde je popis výše použitých parametrů:

  • childTable je název tabulky, která má být vytvořena.
  • sloupec_1, sloupec_2 – sloupce, které mají být přidány do tabulky.
  • fkey_name- název omezení cizího klíče, které má být vytvořeno.
  • child_column1, child_column2…child_column_n- název sloupců chidTable, které odkazují na primární klíč v parentTable.
  • parentTable- název nadřazené tabulky, na jejíž klíč se má odkazovat v podřízené tabulce.
  • parent_column1, parent_column2, … parent_column3- sloupce tvořící primární klíč nadřazené tabulky.

Příklad přidání cizího klíče do tabulky:

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

Na stole oddělení jsme vytvořili cizí klíč s názvem fkey_student_admission. Tento cizí klíč odkazuje na sloupec přijetí v tabulce studentů.

Příklad dotazu CIZÍ KLÍČ

Nejprve se podívejme na data nadřazené tabulky, KURZ.

Dotaz:

SELECT * from COURSE;

Příklad dotazu CIZÍ KLÍČ

Nyní vložíme nějaký řádek do Child tabulky: 'Course_strength_TSQL.'

Pokusíme se vložit dva typy řádků

  1. První typ, pro který bude Course_Id v podřízené tabulce existovat v Course_Id nadřazené tabulky. tj. Course_Id = 1 a 2
  2. Druhý typ, pro který Course_Id v podřízené tabulce neexistuje v Course_Id nadřazené tabulky. tj. Course_Id = 5

Dotaz:

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

Příklad dotazu CIZÍ KLÍČ

Výsledek: Pojďme společně spustit dotaz, abychom viděli naši tabulku rodiče a potomka

V tabulce Course_strength existuje řádek s Course_ID 1 a 2. Zatímco Course_ID 5 je výjimkou.

Příklad dotazu CIZÍ KLÍČ

Shrnutí

  • Každá hodnota cizího klíče musí být součástí Primární klíč jiných tabulek.
  • Jedno MySQL Cizí klíč může odkazovat na jiný sloupec ve stejné tabulce. Tato reference je známá jako vlastní reference.
  • Omezení cizího klíče SQL: slouží k zabezpečení vazeb mezi tabulkami a neplatnými daty, která mají být vložena do sloupce Cizí klíč.
  • Cizí klíč můžete vytvořit pomocí Create Table, Alter Table, popř SQL Server Management Studio.
  • Zde je rozdíl mezi primárním klíčem a cizím klíčem: Klikněte zde