Kurs SQL - Dział Relacje

Dodanie klucza podstawowego

Dodanie klucza podstawowego w tabeli stanowiska na polu id_stanowiska.

ALTER TABLE stanowiska ADD PRIMARY KEY(id_stanowiska)

Dodanie klucza obcego (indeksowanie)

Dodanie indeksu (przygotowanie pod klucz obcy) w tabeli pracusie na polu id_stanowiska.

ALTER TABLE pracusie ADD INDEX(id_stanowiska)

Utworzenie integralności i relacji

Definiowanie klucza obcego i powiązanie tabeli pracusie z tabelą stanowiska.

ALTER TABLE pracusie ADD CONSTRAINT integro
FOREIGN KEY (id_stanowiska)
REFERENCES rel1.stanowiska(id_stanowiska)
ON DELETE RESTRICT ON UPDATE RESTRICT;

ON DELETE RESTRICT: Nie pozwoli usunąć rekordu z tabeli nadrzędnej (stanowiska), jeśli istnieją powiązane rekordy w tabeli podrzędnej (pracusie).
ON UPDATE RESTRICT: Nie pozwoli zaktualizować wartości klucza podstawowego w tabeli nadrzędnej, jeśli istnieją powiązane rekordy w tabeli podrzędnej.

Zapytanie łączące tabele

Zapytanie do obu tabel celem wyświetlenia: imię, nazwisko, stanowisko.

SELECT imie, nazwisko, stanowisko FROM stanowiska
JOIN
Pracusie ON stanowiska.id_stanowiska = pracusie.id_stanowiska

Usuwanie kluczy i integralności

Usunięcie klucza obcego

a) Wyłączenie integralności (usunięcie constraintu):

ALTER TABLE pracusie DROP FOREIGN KEY integro;

Po tej operacji można również usunąć indeks, jeśli nie jest już potrzebny: ALTER TABLE pracusie DROP INDEX id_stanowiska; (opcjonalnie, nie było w treści źródłowej).

Usunięcie klucza podstawowego

Usuwanie klucza podstawowego z tabeli stanowiska:

ALTER TABLE stanowiska DROP PRIMARY KEY;

Zarządzanie sprawdzaniem więzów integralności

Wyłączenie/włączenie globalnego sprawdzania więzów integralności dla kluczy obcych.

SET FOREIGN_KEY_CHECKS = 0; -- Wyłączenie sprawdzania
SET FOREIGN_KEY_CHECKS = 1; -- Włączenie sprawdzania

SET FOREIGN_KEY_CHECKS = 0; jest przydatne podczas operacji masowych, np. importu danych, aby uniknąć błędów związanych z kolejnością wstawiania rekordów do powiązanych tabel. Pamiętaj, aby zawsze przywrócić sprawdzanie (SET FOREIGN_KEY_CHECKS = 1;) po zakończeniu takich operacji.