Samouczek SQL

SQL HOME Wprowadzenie do SQL Składnia SQL Wybór SQL SQL Wybierz Wyraźne SQL Gdzie SQL i lub nie Kolejność SQL według SQL Wstaw do Puste wartości SQL Aktualizacja SQL Usuń SQL SQL Wybierz Góra Minimalna i maksymalna wartość SQL Liczba SQL, średnia, suma Polubienie SQL Symbole wieloznaczne SQL SQL In SQL między Aliasy SQL Połączenia SQL Wewnętrzne złącze SQL Połączenie lewe SQL Prawe połączenie SQL Pełne dołączenie do SQL Samoprzyłączanie SQL SQL Union Grupa SQL według Posiadanie SQL SQL istnieje SQL Dowolne, Wszystkie SQL Wybierz do Wstaw SQL do Wybierz Sprawa SQL Funkcje zerowe SQL Procedury składowane w SQL Komentarze SQL Operatory SQL

Baza danych SQL

Tworzenie bazy danych SQL Porzucona baza danych SQL Kopia zapasowa bazy danych SQL Utwórz tabelę SQL Tabela upuszczania SQL Zmień tabelę SQL Ograniczenia SQL SQL nie jest pusty Unikalny SQL Klucz podstawowy SQL Klucz obcy SQL Sprawdzanie SQL Domyślny SQL Indeks SQL Automatyczny przyrost SQL Daty SQL Widoki SQL Wstrzyknięcie SQL Hosting SQL Typy danych SQL

Referencje SQL

Słowa kluczowe SQL Funkcje MySQL Funkcje serwera SQL Funkcje dostępu MS Szybkie odwołanie do SQL

Przykłady SQL

Przykłady SQL Quiz SQL Ćwiczenia SQL Certyfikat SQL

Ograniczenie klucza obcego SQL


Ograniczenie klucza obcego SQL

Ograniczenie FOREIGN KEYsłuży do zapobiegania akcjom, które zniszczyłyby połączenia między tabelami.

A FOREIGN KEYto pole (lub zbiór pól) w jednej tabeli, które odwołuje się do pola PRIMARY KEYw innej tabeli.

Tabela z kluczem obcym nazywana jest tabelą podrzędną, a tabela z kluczem podstawowym nazywana jest tabelą odniesienia lub tabelą nadrzędną.

Spójrz na następujące dwie tabele:

Tabela osób

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

Tabela zamówień

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

Zwróć uwagę, że kolumna „PersonID” w tabeli „Zamówienia” wskazuje kolumnę „PersonID” w tabeli „Osoby”.

Kolumna „PersonID” w tabeli „Osoby” to kolumna w tabeli PRIMARY KEY„Osoby”.

Kolumna „PersonID” w tabeli „Zamówienia” znajduje się FOREIGN KEYw tabeli „Zamówienia”.

Ograniczenie FOREIGN KEYzapobiega wstawianiu nieprawidłowych danych do kolumny klucza obcego, ponieważ musi to być jedna z wartości zawartych w tabeli nadrzędnej.



SQL FOREIGN KEY na CREATE TABLE

Poniższy kod SQL tworzy FOREIGN KEYkolumnę „PersonID” podczas tworzenia tabeli „Zamówienia”:

MySQL:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

Serwer SQL / Oracle / MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

Aby zezwolić na nazywanie FOREIGN KEYograniczenia i zdefiniować FOREIGN KEYograniczenie na wielu kolumnach, użyj następującej składni SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

SQL FOREIGN KEY w ALTER TABLE

Aby utworzyć FOREIGN KEYograniczenie dla kolumny „PersonID”, gdy tabela „Orders” jest już utworzona, użyj następującego kodu SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Aby zezwolić na nazywanie FOREIGN KEYograniczenia i zdefiniować FOREIGN KEYograniczenie na wielu kolumnach, użyj następującej składni SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

UPUŚĆ OGRANICZENIE KLUCZA OBCEGO

Aby usunąć FOREIGN KEYograniczenie, użyj następującego kodu SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

Serwer SQL / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;