Für manche Anwendungen ist es sinnvoll, die Zeilen einer Tabelle durch eine oder mehrere Spalten eindeutig zu kennzeichnen, z. B. um sie in einer festen Reihenfolge sequentiell abarbeiten zu können. Dies erfolgt über die Vergabe eines sogenannten Primärschlüssels. Eingeleitet durch 'PRIMARY KEY' werden die Spaltennamen aufgelistet, die den Schlüssel der Tabelle bilden sollen. Die Eingabewerte der so definierten Schlüsselspalten dürfen nicht NULL sein.
Die Zeilen der Tabelle 'stadt' sollen eindeutig über die Postleitzahl identifiziert werden können. Dazu wird ein einspaltiger Primärschlüssel angelegt. Die Postleitzahl braucht innerhalb der Tabellendefinition nicht zwangsläufig als erste Spalte genannt zu werden.
CREATE TABLE stadt (name CHAR(15) NOT NULL, bu_land CHAR(20) NOT NULL, plz CHAR(5) CONSTRAINT SUBSTR(plz,1,5) like '(0-9)(0-9)(0-9)(0-9)(0-9)', PRIMARY KEY (plz))
Es existiert eine syntaktische Variante, eine Tabelle mit Schlüssel anzulegen. Die Schlüsselspalten werden mit dem Attribut KEY versehen; sie müssen in der CREATE-TABLE-Anweisung in der Reihenfolge ihrer Definition als erste Spalten aufgelistet werden.
CREATE TABLE stadt (plz CHAR(5) CONSTRAINT SUBSTR(plz,1,5) like '(0-9)(0-9)(0-9)(0-9)(0-9)' KEY, name CHAR(15) NOT NULL, bu_land CHAR(20) NOT NULL)
Das Einfügen von Zeilen geschieht wie in eine Basistabelle ohne KEY-Definition.
Die folgenden Beispiele beziehen sich auf die obige Tabellendefinition:
INSERT stadt VALUES ('01109','Dresden','Sachsen') INSERT stadt VALUES ('10969','Berlin','Berlin') INSERT stadt VALUES ('13355','Berlin','Berlin') INSERT stadt VALUES ('14473','Potsdam','Brandenburg') INSERT stadt VALUES ('20251','Hamburg','Hamburg') INSERT stadt VALUES ('40233','Düsseldorf','Nordrhein-Westfalen') INSERT stadt VALUES ('60313','Frankfurt','Hessen') INSERT stadt VALUES ('69117','Heidelberg','Baden-Württemberg') INSERT stadt VALUES ('80335','München','Bayern') INSERT stadt VALUES ('89477','Ulm','Baden-Württemberg')
Der erneute Versuch, eine Stadt mit einer Postleitzahl '10969' einzutragen, würde zu einer Fehlermeldung führen. Die KEY-Definition gewährleistet die Eindeutigkeit der Spalte.