SQL PRIMARY KEY (klucz główny)

SQL PRIMERY KEY


    


DEFINICJA

Klucz główny (ang. primary key) to nic innego jak unikalny identyfikator każdego rekordu w tabeli. Słówko unikalny mówi o tym, że wartości w tej kolumnie nie mogą się powtarzać. Kolumna która jest kluczem głównym nie może także przechowywać wartości NULL, czyli wartości nieokreślonych/nieznanych. W jednej tabeli może być tylko jedna kolumna będąca kluczem głównym. Z mojej dotychczasowej praktyki z bazami danych wynika, że zdecydowana większość tabel powinna mieć klucz główny. Klucz ten nadajemy używając polecenia PRIMARY KEY, co pokażą poniższe przykłady.

Klucz główny możemy określić w kilku sytuacjach:
1. Tworzymy nową tabele i definiujemy klucz główny który obejmuje jedną kolumnę
2. Składnia polecenia PRIMARY KEY dla takiego przypadku.

Przykład utworzenia klucza głównego na kolumnie "ID_miasto" w tabeli "Miasta" przechowująca dane nt. miast.

CREATE TABLE Miasta
    (
         ID_miasto INT PRIMARY KEY
        ,nazwa NVARCHAR(30)
        ,kod_pocztowy NVARCHAR(6)
    );

Kluczem głównym nie muszą zawsze być wartości z jednej tabeli. Niekiedy dopiero wartości z dwóch kolumn są wartościami unikalnymi w skali tabeli i mogą być kluczem głównym. Wtedy klucz główny definiujemy przy pomocy poniższej składni. Przyjmijmy, że wartości z kolumn "ID_miasto" i "nazwa" mają tworzyć klucz główny.

CREATE TABLE Miasta
    (
         ID_miasto INT
        ,nazwa NVARCHAR(30)
        ,kod_pocztowy NVARCHAR(6)
        CONSTRAINT pk_Miasta PRIMARY KEY (ID_miasto,nazwa)
    );

zwróć uwagę, że kluczowi głównemu w tym przypadku nadano nazwę "pk_Miasta" która identyfikuje ten klucz. Jeżeli nie określiliśmy klucza głównego przy tworzeniu tabeli możemy zrobić to później wykorzystując polcenie ALTER TABLE, które służy do modyfikacji struktury tabeli. W kontekście klucza głównego modyfikacja ta może polegać na dodaniu lub usunięciu tego klucza. Wtedy nasz kod wyglądał będzie tak.

Przykład ustawienia kolumny ID_miasto jako klucz główny (dodanie klucza głównego) w tabeli Miasta.

ALTER TABLE Miasta
ADD PRIMARY KEY(ID_miasto)

A jeżeli potrzebujemy żeby kluczem głównym było kilka kolumn to składnia kodu będzie analogiczny jest przy tworzeniu nowej tabeli czyli:

ALTER TABLE Miasta
ADD CONSTRAINT pk_Miasta PRIMARY KEY(ID_miasto,nazwa)

Tak jak to wyglądało przy tworzeniu nowej tabeli utworzonemu kluczowi przypisywana jest nazwa, w tym przypadku jest to "pk_Miasta". Teraz warto przedstawić "mechanizm" usuwania kluczy głównych z tabeli. Do tego posługujemy się poleceniem DROP.

Przykład usunięcia klucza głównego z kolumny "ID_miasto" z tabeli "Miasta", w sytuacji kiedy kluczem głównym jest jedna kolumna "ID_miasto".

ALTER TABLE Miasta
DROP PRIMARY KEY(ID_miasto)

Przykład usunięcia klucza głównego w tabeli "Miasta", gdzie kluczem głównym są dwie kolumny "ID_miasto" i "nazwa".

ALTER TABLE Miasta
DROP CONSTRAINT pk_Miasta

zwróć uwagę, że przy usuwaniu klucza głównego (dwie kolumny) posługujemy się nazwą przypisaną wcześniej do tego klucza, czyli "pk_Miasta".