## Primärschlüssel

Für manche Anwendungen ist es sinnvoll, die Zeilen einer Tabelle durch eine oder mehrere Spalten eindeutig zu kennzeichnen, um sie z.B. in einer festen Reihenfolge abarbeiten zu können. Dies erfolgt über die Vergabe eines sogenannten Primärschlüssels. Durch die Schlüsselworte PRIMARY KEY werden die Spaltennamen gekennzeichnet, die den Schlüssel der Tabelle bilden sollen. Die Eingabewerte der so definierten Schlüsselspalten dürfen kein NULL-Wert sein.

Das Einfügen von Zeilen in eine Tabelle mit Primärschlüssel geschieht wie in eine Basistabelle ohne Primärschlüsseldefinition. Allerdings führt der Versuch, einen bereits vorhandenen Wert ein zweites Mal in die Primärschlüsselspalte einzufügen, zu einer Fehlermeldung, da die Eindeutigkeit der Spalte durch die Definition des Primärschlüssels gewährleistet wird.

Ein Primärschlüssel kann aus mehreren Spalten bestehen. Es ist jedoch unüblich, einen Schlüssel aus mehr als 5 Spalten zu konstruieren, da es für den Benutzer nicht mehr überschaubar ist, die Werte eindeutig einzugeben. Die Anordnung der Spalten hinter den Schlüsselworten PRIMARY KEY legt die Schlüsselreihenfolge fest.

### Voraussetzungen

Sie benötigen die Demo-Daten für das SQL-Tutorial.

Starten Sie das Query Tool SQL Studio als Datenbankadministrator MONA mit dem Kennwort RED und melden Sie sich an die Demo-Datenbankinstanz DEMODB an.

SQL-Referenzhandbuch, Schlüsseldefinition (key_definition)

### Anlegen eines Primärschlüssels

Sie können einen Primärschlüssel direkt bei der Tabellendefinition angeben oder nachträglich zu einer vorhandenen Tabelle hinzufügen.

#### Einfache Primärschlüssel

Sie können Primärschlüssel definieren, die sich nur auf eine Spalte der Tabelle beziehen.

Sie können die CREATE TABLE-Anweisung verwenden, um Primärschlüssel beim Anlegen einer Tabelle zu definieren.

CREATE TABLE hotel.person
(pno FIXED(6) PRIMARY KEY,
name CHAR(20),
city CHAR(20))

oder

CREATE TABLE hotel.person
(pno FIXED(6),
name CHAR(20),
city CHAR(20),
PRIMARY KEY (pno))

Beide Anweisungen bewirken folgendes: Die Zeilen der Tabelle person sollen eindeutig über die Personennummer identifiziert werden können.

Siehe auch:

SQL-Referenzhandbuch, CREATE TABLE-Anweisung (create_table_statement)

Sie können die ALTER TABLE-Anweisung verwenden, um Primärschlüssel zu bereits vorhanden Tabellen hinzuzufügen.

...

1. Löschen Sie die Tabelle person.
DROP TABLE hotel.person

2. Legen Sie die Tabelle person wie folgt an:
CREATE TABLE hotel.person
(pno FIXED(6),
name CHAR(20),
city CHAR(20))

3. Fügen Sie einen Primärschlüssel hinzu:
ALTER TABLE hotel.person ADD PRIMARY KEY (pno)

Die Zeilen der Tabelle person sollen eindeutig über die Personennummer identifiziert werden können.

#### Primärschlüssel über mehrere Spalten

Sie können einen Primärschlüssel über mehrere Spalten der Tabelle definieren.

1. Löschen Sie die Tabelle person.
DROP TABLE hotel.person

2. Legen Sie die Tabelle person wie folgt an:
CREATE TABLE hotel.person
(pno FIXED(6),
name CHAR(20),
city CHAR(20))

3. Fügen Sie einen Primärschlüssel hinzu:
ALTER TABLE hotel.person ADD PRIMARY KEY (pno,name)

Die Zeilen der Tabelle person sollen eindeutig über Personennummer und Namen identifiziert werden können.

Siehe auch:

SQL-Referenzhandbuch, ALTER TABLE-Anweisung (alter_table_statement)

SQL-Referenzhandbuch, ADD-Definition (add_definition)

### Ändern eines Primärschlüssels

Sie können die ALTER TABLE-Anweisung verwenden, um vorhandene Primärschlüssel zu ändern.

ALTER TABLE hotel.person ALTER PRIMARY KEY (pno)

Die Zeilen der Tabelle person sollen eindeutig über die Personennummer identifiziert werden können.

Siehe auch:

SQL-Referenzhandbuch, ALTER-Definition (alter_definition)

### Löschen eines Primärschlüssels

Sie können die ALTER TABLE-Anweisung verwenden, um Primärschlüssel zu löschen.

ALTER TABLE hotel.person DROP PRIMARY KEY

Siehe auch:

SQL-Referenzhandbuch, DROP-Definition (drop_definition)

Weitere Beispiele zur Datendefinition