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
Jak vytvořit CIZÍ KLÍČ v SQL
Můžeme vytvořit a Cizí klíč v SQL serveru v 2 způsoby:
- SQL Server Management Studio
- 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.
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…
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.
Krok 3) In 'Zahraniční klíčový vztah,, Klikněte 'Přidat'
Krok 4) V 'Specifikace tabulky a sloupce' klikněte na ikona „…“.
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íčů“.
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.
Krok 7) Klikněte na Přidat.
Krok 8) Zadejte název tabulky jako 'Course_Strength' a klikněte na OK.
Výsledek: Nastavili jsme vztah rodič-dítě mezi 'Chod' si 'Síla_kurzu.'
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.
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.
Výsledek: Nastavili jsme vztah rodič-dítě mezi 'Chod' si 'Course_strength_TSQL.'
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;
Nyní vložíme nějaký řádek do Child tabulky: 'Course_strength_TSQL.'
Pokusíme se vložit dva typy řádků
- První typ, pro který bude Course_Id v podřízené tabulce existovat v Course_Id nadřazené tabulky. tj. Course_Id = 1 a 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');
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.
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