KLUCZ OBCY SQL: Jak tworzyć w SQL Server na przykładzie

Co to jest KLUCZ OBCY?

A klucz obcy zapewnia sposób egzekwowania integralności referencyjnej w SQL Server. Krótko mówiąc, klucz obcy zapewnia, że ​​wartości z jednej tabeli muszą znajdować się w innej tabeli.

Zasady dotyczące KLUCZ OBCY

  • Wartość NULL jest dozwolona w kluczu obcym SQL.
  • Tabela, do której się odwołujemy, nazywana jest tabelą nadrzędną
  • Tabela z kluczem obcym w SQL nazywa się tabelą podrzędną.
  • Klucz obcy SQL w tabeli podrzędnej odwołuje się do klucza podstawowego w tabeli nadrzędnej.
  • Ta relacja rodzic-dziecko wymusza regułę znaną jako „Referencja”. Integrity".

Poniższy przykład klucza obcego w SQL z diagramem podsumowuje wszystkie powyższe punkty dla KLUCZA OBCEGO

Reguły dla KLUCZ OBCY w SQL
Jak działa klucz obcy

Jak utworzyć KLUCZ OBCY w SQL

Możemy stworzyć klucz obcy na serwerze SQL w 2 sposobów:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

Tabela nadrzędna: Załóżmy, że mamy istniejącą tabelę nadrzędną jako „Kurs”. Course_ID i Course_name to dwie kolumny z Course_Id jako kluczem podstawowym.

Utwórz KLUCZ OBCY w SQL

Tabela podrzędna: Musimy utworzyć drugą tabelę jako tabelę podrzędną. „Course_ID” i „Course_Strength” w dwóch kolumnach. Jednakże „Course_ID” będzie kluczem obcym.

Krok 1) Kliknij prawym przyciskiem myszy Tabele>Nowy>Tabela…

Utwórz KLUCZ OBCY w SQL

Krok 2) Wprowadź nazwy dwóch kolumn jako „ID_kursu” i „Siła_kursu”. Kliknij prawym przyciskiem myszy kolumnę „Course_Id”. Teraz kliknij Związek.

Utwórz KLUCZ OBCY w SQL

Krok 3) In „Relacja klucza zagranicznego,' Kliknij 'Dodaj'

Utwórz KLUCZ OBCY w SQL

Krok 4) W obszarze „Specyfikacje tabeli i kolumny” kliknij opcję '…' Ikona

Utwórz KLUCZ OBCY w SQL

Krok 5) Wybierz „Tabelę kluczy podstawowych” jako „KURS”, a z menu rozwijanego nową tabelę, która jest teraz tworzona, jako „Tabela kluczy obcych”.

Utwórz KLUCZ OBCY w SQL

Krok 6) „Tabela kluczy podstawowych” — wybierz kolumnę „Identyfikator_kursu” jako kolumnę „Tabela kluczy podstawowych”.

„Tabela kluczy obcych” — wybierz kolumnę „Identyfikator_kursu” jako kolumnę „Tabela kluczy obcych”. Kliknij OK.

Utwórz KLUCZ OBCY w SQL

Krok 7) Kliknij na Dodaj.

Utwórz KLUCZ OBCY w SQL

Krok 8) Podaj nazwę tabeli jako „Siła_kursu” i kliknij OK.

Utwórz KLUCZ OBCY w SQL

Wynik: Ustawiliśmy relację rodzic-dziecko pomiędzy 'Kurs' i „Siła_kursu.”

Utwórz KLUCZ OBCY w SQL

T-SQL: Utwórz tabelę nadrzędny-podrzędny przy użyciu języka T-SQL

Tabela nadrzędna: Rozważmy jeszcze raz: mamy istniejącą tabelę nadrzędną o nazwie „Kurs”.

Course_ID i Course_name to dwie kolumny z Course_Id jako kluczem podstawowym.

Utwórz tabelę nadrzędny-podrzędny przy użyciu języka T-SQL

Tabela podrzędna: Musimy utworzyć drugą tabelę jako tabelę podrzędną o nazwie „Course_Strength_TSQL”.

„Course_ID” i „Course_Strength” jako dwie kolumny tabeli podrzędnej Course_Strength_TSQL.' Jednakże „Course_ID” będzie kluczem obcym.

Poniżej znajduje się składnia tworzenia tabeli z KLUCZEM OBCYM

Składnia:

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

Oto opis powyższych parametrów:

  • childTable to nazwa tabeli, która ma zostać utworzona.
  • kolumna_1, kolumna_2 - kolumny, które mają zostać dodane do tabeli.
  • fkey_name — nazwa ograniczenia klucza obcego, które ma zostać utworzone.
  • kolumna_dziecka1, kolumna_dziecka2…kolumna_dziecka_n- nazwa kolumn chidTable odnoszących się do klucza podstawowego w tabeli nadrzędnej.
  • parentTable – nazwa tabeli nadrzędnej, do której klucza ma się odwoływać tabela podrzędna.
  • kolumna_nadrzędna1, kolumna_nadrzędna2, …kolumna_nadrzędna3 – kolumny tworzące klucz podstawowy tabeli nadrzędnej.
  • PRZY USUNIĘCIU. Parametr opcjonalny. Określa, co stanie się z danymi podrzędnymi po usunięciu danych nadrzędnych. Niektóre wartości tego parametru to NO ACTION, SET NULL, CASCADE lub SET DEFAULT.
  • ON AKTUALIZACJA — parametr opcjonalny. Określa, co stanie się z danymi podrzędnymi po aktualizacji danych nadrzędnych. Niektóre wartości tego parametru to NO ACTION, SET NULL, CASCADE lub SET DEFAULT.
  • BRAK AKCJI – używane razem z ON DELETE i ON UPDATE. Oznacza to, że po aktualizacji lub usunięciu danych nadrzędnych nic się nie stanie z danymi dziecka.
  • KASKADA – używane razem z ON DELETE i ON UPDATE. Dane podrzędne zostaną usunięte lub zaktualizowane po usunięciu lub zaktualizowaniu danych nadrzędnych.
  • SET NULL – używane razem z ON DELETE i ON UPDATE. Element podrzędny zostanie ustawiony na wartość null po zaktualizowaniu lub usunięciu danych nadrzędnych.
  • USTAW DOMYŚLNE – używane razem z ON DELETE i ON UPDATE. Dane podrzędne zostaną ustawione na wartości domyślne po aktualizacji lub usunięciu danych nadrzędnych.

Zobaczmy przykład klucza obcego w SQL, aby utworzyć tabelę z jedną kolumną jako KLUCZEM OBCYM:

Klucz obcy w przykładzie SQL

zapytanie:

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

Krok 1) Uruchom zapytanie, klikając opcję Wykonaj.

Klucz obcy w SQL

Wynik: Ustawiliśmy relację rodzic-dziecko pomiędzy 'Kurs' i „Kurs_strength_TSQL.”

Klucz obcy w SQL

Korzystanie z ALTER TABEL

Teraz nauczymy się używać klucza obcego w SQL i dodawać klucz obcy w serwerze SQL za pomocą instrukcji ALTER TABLE, zastosujemy składnię podaną poniżej:

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

Oto opis parametrów zastosowanych powyżej:

  • childTable to nazwa tabeli, która ma zostać utworzona.
  • kolumna_1, kolumna_2 - kolumny, które mają zostać dodane do tabeli.
  • fkey_name — nazwa ograniczenia klucza obcego, które ma zostać utworzone.
  • kolumna_dziecka1, kolumna_dziecka2…kolumna_dziecka_n- nazwa kolumn chidTable odnoszących się do klucza podstawowego w tabeli nadrzędnej.
  • parentTable – nazwa tabeli nadrzędnej, do której klucza ma się odwoływać tabela podrzędna.
  • kolumna_nadrzędna1, kolumna_nadrzędna2, …kolumna_nadrzędna3 – kolumny tworzące klucz podstawowy tabeli nadrzędnej.

Zmień tabelę, dodaj przykład klucza obcego:

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

W tabeli wydziałów utworzyliśmy klucz obcy o nazwie fkey_student_admission. Ten klucz obcy odnosi się do kolumny wstępu w tabeli uczniów.

Przykładowe zapytanie KLUCZ OBCY

Najpierw przyjrzyjmy się naszym danym w tabeli nadrzędnej, COURSE.

zapytanie:

SELECT * from COURSE;

Przykładowe zapytanie KLUCZ OBCY

Teraz wstawmy jakiś wiersz do tabeli podrzędnej: „Kurs_strength_TSQL.”

Spróbujemy wstawić dwa typy wierszy

  1. Pierwszy typ, dla którego Course_Id w tabeli podrzędnej będzie istniał w Course_Id tabeli Parent. tj. Course_Id = 1 i 2
  2. Drugi typ, dla którego Course_Id w tabeli podrzędnej nie istnieje w Course_Id tabeli Parent. tj. Course_Id = 5

zapytanie:

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

Przykładowe zapytanie KLUCZ OBCY

Wynik: Uruchommy razem zapytanie, aby zobaczyć naszą tabelę nadrzędną i podrzędną

Wiersz o identyfikatorze kursu 1 i 2 istnieje w tabeli Course_strength. Natomiast Course_ID 5 jest wyjątkiem.

Przykładowe zapytanie KLUCZ OBCY

Podsumowanie

  • Każda wartość klucza obcego musi być częścią Główny klucz innych tabel.
  • Kurs MySQL Klucz obcy może odwoływać się do innej kolumny w tej samej tabeli. To odniesienie jest znane jako samoodniesienie.
  • Ograniczenie klucza obcego SQL: służy do zabezpieczenia połączeń między tabelami i nieprawidłowymi danymi, które mają zostać wstawione do kolumny Klucz obcy.
  • Możesz utworzyć klucz obcy za pomocą opcji Utwórz tabelę, Zmień tabelę lub SQL Server Management Studio.
  • Oto różnica między kluczem podstawowym a kluczem obcym: Kliknij tutaj