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

Jak utworzyć KLUCZ OBCY w SQL
Możemy stworzyć klucz obcy na serwerze SQL w 2 sposobów:
- SQL Server Management Studio
- 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.
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…
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.
Krok 3) In „Relacja klucza zagranicznego,' Kliknij 'Dodaj'
Krok 4) W obszarze „Specyfikacje tabeli i kolumny” kliknij opcję '…' Ikona
Krok 5) Wybierz „Tabelę kluczy podstawowych” jako „KURS”, a z menu rozwijanego nową tabelę, która jest teraz tworzona, jako „Tabela kluczy obcych”.
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.
Krok 7) Kliknij na Dodaj.
Krok 8) Podaj nazwę tabeli jako „Siła_kursu” i kliknij OK.
Wynik: Ustawiliśmy relację rodzic-dziecko pomiędzy 'Kurs' i „Siła_kursu.”
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.
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.
Wynik: Ustawiliśmy relację rodzic-dziecko pomiędzy 'Kurs' i „Kurs_strength_TSQL.”
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;
Teraz wstawmy jakiś wiersz do tabeli podrzędnej: „Kurs_strength_TSQL.”
Spróbujemy wstawić dwa typy wierszy
- 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
- 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');
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.
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