REFERENCES w SQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Opublikowano: Zaktualizowano:

REFERENCES to klauzula SQL używana przy definiowaniu klucza obcego. Służy do wskazania, z którą tabelą i którą kolumną ma być powiązana dana kolumna w tabeli podrzędnej.

W MySQL klauzula REFERENCES jest najczęściej częścią definicji ograniczenia FOREIGN KEY. Dzięki niej baza danych pilnuje, aby w tabeli podrzędnej nie pojawiła się wartość, która nie istnieje w tabeli nadrzędnej.

Przykład relacji

Tabela klienci przechowuje klientów, a tabela zamowienia przechowuje ich zamówienia. Jedno zamówienie należy do jednego klienta, więc kolumna id_klienta w tabeli zamowienia powinna wskazywać na id w tabeli klienci.

CREATE TABLE klienci (
  id INT PRIMARY KEY,
  imie VARCHAR(50)
);

CREATE TABLE zamowienia (
  id INT PRIMARY KEY,
  id_klienta INT,
  FOREIGN KEY (id_klienta) REFERENCES klienci(id)
);

W tym przykładzie fragment:

REFERENCES klienci(id)

oznacza, że wartości w kolumnie zamowienia.id_klienta muszą istnieć w kolumnie klienci.id.

Po co stosuje się REFERENCES?

  • do określania powiązań między tabelami,
  • do tworzenia relacji, np. jeden-do-wielu,
  • do ochrony spójności danych,
  • do zapobiegania wpisaniu nieistniejącego identyfikatora,
  • do definiowania kluczy obcych.

Ważne na egzaminie

Jeśli pytanie brzmi: „Która klauzula określa powiązania między tabelami?”, poprawną odpowiedzią jest REFERENCES.

Nie należy mylić jej z:

  • PRIMARY KEY — definiuje klucz główny tabeli,
  • INDEX — tworzy indeks przyspieszający wyszukiwanie,
  • ORDER BY — sortuje wyniki zapytania.