SQL Schnellstart – Primärschlüssel
Ein sehr wichtiges Attribut in Datenbanktabellen ist der sogenannte Primärschlüssel. In dieser Lektion erfährst du, was ein Primärschlüssel ist und wie du diesen verwenden kannst.
Primärschlüssel: Definition
Ein Primärschlüssel ist ein Attribut in einer Datenbanktabelle, welches jeden Datensatz, also jede Zeile, eindeutig identifiziert. Der Wert eines Primärschlüssels darf in einer bestimmten Tabelle nur genau einmal vorkommen. Der Wert des Primärschlüssels darf auch nicht "NULL" sein (NULL steht hier nicht für die Zahl '0', sondern für "keinen Wert"). Eine Tabelle darf nur einen Primärschlüssel haben, ein Primärschlüssel kann aber aus mehreren Spalten bzw. Attributen bestehen.
Primärschlüssel: Syntax
Wie man einen Primärschlüssel setzt, hängt vom Datenbankmanagementsystem ab. Hierbei gibt es wieder verschiedene Wege; Du kannst diesen beispielsweise mit einer grafischen Benutzeroberfläche setzen oder aber auch wenn du mit SQL Tabellen erstellst. Folgend zeige ich dir, wie du einen Primärschlüssel beim Erstellen einer Tabelle setzen kannst. Die Syntax dafür sieht folgendermaßen aus:
CREATE TABLE Kunde (
id INT NOT NULL,
vorname varchar(255) NOT NULL,
nachname varchar(255) NOT NULL,
alter INT,
PRIMARY KEY (id)
);
Nach dem Erstellen der Tabelle kann man mit PRIMARY KEY(Attributname) angeben.
Hinweis: Auch die SQL-Syntax kann sich bei den verschiedenen Datenbankmanagementsystemen unterscheiden.
Häufig sieht man deshalb auch folgende Syntax:
CREATE TABLE Kunde (
id INT NOT NULL PRIMARY KEY,
vorname varchar(255) NOT NULL,
nachname varchar(255) NOT NULL,
alter INT
);
Man kann auch einen zusammengesetzten Primärschlüssel aus mehreren Spalten bzw. Attributen bilden:
CREATE TABLE Kunde (
vorname varchar(255) NOT NULL,
nachname varchar(255) NOT NULL,
alter INT,
PRIMARY KEY (vorname,nachname)
);
Was aber wichtig ist, dass der Primärschlüssel nur genau einmal vorkommt. Im oberen Beispiel wird der Primärschlüssel aus dem Vornamen und dem Nachnamen gebildet, es dürfen also nicht zwei Kunden mit dem Namen "Thomas Müller" in die Datenbanktabelle eingetragen werden. Denn sonst würde der Primärschlüssel mehr als einen Datensatz identifizieren.
Primärschlüssel: Beispiel
Okay, wofür braucht man das jetzt? Mit "JOINS" hast du bereits einen solchen Anwendungsfall kennengelernt, wenn man beispielsweise Abfragen erstellen möchte, die über mehr als zwei Tabellen gehen. Stell dir eine Bank vor: Ein Kunde muss kein Konto haben (0), kann aber endlich viele Konten haben (n); Ein Konto dagegen gehört immer genau einem Kunden.
Nun sollst du als Bankangestellter alle Konten eines bestimmten Kunden, zu einem Konto verschmelzen. Dafür musst du erst mal alle aktiven Konten des Kunden auflisten. Deine Arbeitskollegen haben dir vorher die KundenID (=201), welche der Primärschlüssel in Kunde ist, übermittelt. Im Konto dagegen ist ein Fremdschlüssel ein Attribut, das auf den Primärschlüssel von Kunde verweist. Sieh dir folgendes Diagramm an:
Jetzt musst du nur noch folgende SQL-Abfrage ausführen und erhältst alle Kunden:
SELECT *
FROM konto
WHERE KundenID = 201;
Stell dir, vor du hättest nur den Vornamen des Kunden erhalten und in der Tabelle "Konto" wäre statt KundenID der Vornamen des Kunden gespeichert. Wenn du den Namen "Thomas" erhältst und danach die Abfrage ausführen würdest, würdest du die Konten von "Thomas Müller", "Thomas Baum", "Thomas Adler" usw. bekommen - "Thomas" ist hier also nicht eindeutig.
SQL-Challenge: Erstelle eine Tabelle mit Primärschlüssel
Erstelle als kleine Challenge in einem Datenbankmanagementsystem eine Tabelle mit einem Primärschlüssel.
Tipp: Verwendest du XAMPP, MySQL und PhpMyAdmin, so kannst du deine "CREATE TABLE-Anweisung" unter dem Reiter "SQL" eingeben. Erstelle davor eine Datenbank und klicke dann auf diese. Das Attribut "alter" musst du übrigens umbenennen, weil "alter" ein reserviertes SQL-Schlüsselwort ist.
Fazit
Du weißt nun, dass du mit Primärschlüssel deine Datensätze eindeutig identifizieren kannst. Für die Definition der Primärschlüssel kannst du das Schlüsselwort "PRIMARY KEY(Spaltenname)" verwenden. Du kannst auch mit mehreren Spalten einen sogenannten zusammengesetzten Primärschlüssel erstellen.