W instrukcji CREATE TABLE użycie klauzuli PRIMARY KEY przy deklaracji pola tabeli spowoduje, że pole to stanie się
PRIMARY KEY.FOREIGN KEY ... REFERENCES, wskazującą inną tabelę.PRIMARY KEY czyni pole kluczem podstawowym: unikalnym i niepustym identyfikatorem rekordu.UNIQUE i dopuszcza NULL; klucz podstawowy jest czymś więcej.Pytanie z egzaminu CKE, październik 2016 (arkusz E.14-X-16.08).
Klauzula PRIMARY KEY dopisana do pola w CREATE TABLE czyni je kluczem podstawowym tabeli, czyli jednoznacznym identyfikatorem każdego rekordu. Na przykład CREATE TABLE uczniowie (id INT AUTO_INCREMENT PRIMARY KEY, nazwisko VARCHAR(50)); sprawia, że dwa wiersze nie mogą mieć tego samego id.
Klucz podstawowy łączy dwie cechy: wartości muszą być unikalne i nie mogą być puste (NULL). Tabela ma najwyżej jeden klucz podstawowy, choć może on obejmować kilka kolumn. MySQL zakłada dla niego indeks automatycznie, ale nazwa tej roli to właśnie klucz podstawowy, a inne tabele odwołują się do niego kluczami obcymi.
Trudność polega na tym, że klucz podstawowy rzeczywiście ma cechy indeksu unikalnego, więc opisy indeksowe brzmią wiarygodnie. Indeks unikalny tworzy się jednak klauzulą UNIQUE, a taka kolumna może przyjmować wartość NULL i tabela może mieć wiele takich indeksów. PRIMARY KEY jest jeden na tabelę i nie dopuszcza pustych wartości, dlatego ma własną nazwę.
„Indeks klucza” to określenie bez ścisłego znaczenia w SQL - indeks jest mechanizmem, który przyspiesza wyszukiwanie, a nie rodzajem klucza.
Klucz obcy definiuje się inaczej: klauzulą FOREIGN KEY ... REFERENCES, która wiąże pole z kluczem podstawowym innej tabeli. Samo PRIMARY KEY przy deklaracji pola tworzy więc klucz podstawowy.
Przy projektowaniu tabeli kluczem podstawowym zostaje najczęściej sztuczny identyfikator liczbowy z autonumeracją, bo jego wartości są zawsze unikalne i nigdy się nie zmieniają.