Dies ist eine alte Version des Dokuments!


LU05b – SQL-DDL: Constraints (Einschränkungen)

Sie lernen in dieser Lektion:

  • was Constraints (Einschränkungen) sind
  • warum sie in Datenbanken wichtig sind
  • wie Sie die wichtigsten Constraints direkt beim Erstellen einer Tabelle setzen

Constraints legen Regeln für Spalten in einer Tabelle fest. Sie sorgen dafür, dass Daten korrekt, vollständig und widerspruchsfrei gespeichert werden.

Warum brauchen wir Constraints?

  • verhindern fehlerhafte oder unvollständige Einträge
  • schützen vor doppelten IDs oder leeren Pflichtfeldern
  • stellen sicher, dass Daten logisch und konsistent bleiben

Beispiele aus der Praxis:

  • Jeder Schüler/jede Schülerin braucht eine eindeutige Schülernummer (ID)
  • Der Name eines Kunden darf nicht leer sein
  • Die E-Mail-Adresse eines Benutzers soll nur einmal vorkommen

Constraints helfen also, Datenqualität sicherzustellen.

Der Primärschlüssel (PRIMARY KEY) identifiziert jeden Datensatz eindeutig. Jede Tabelle kann nur einen Primärschlüssel haben.

CREATE TABLE ort (
  plz CHAR(4) PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
);

Wirkung: Keine zwei Datensätze dürfen dieselbe PLZ haben. Die PLZ darf ausserdem nicht leer (NULL) sein.

Wenn es keine natürliche ID gibt, kann man eine künstliche ID verwenden, die automatisch hochzählt.

CREATE TABLE kunde (
  kunden_id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(100),
);

Wirkung: Die Datenbank vergibt bei jedem neuen Datensatz automatisch eine neue Nummer (1, 2, 3, …)

Mit NOT NULL legen Sie fest, dass ein Feld nicht leer bleiben darf.

CREATE TABLE ort (
  plz CHAR(4) NOT NULL,
  name VARCHAR(50) NOT NULL,
);

Wirkung: Versucht jemand, ohne PLZ oder Ort einen Datensatz einzufügen, meldet die Datenbank einen Fehler.

Constraint Bedeutung
NOT NULL Spalte darf nicht leer bleiben
PRIMARY KEY Eindeutige ID für jeden Datensatz
AUTO_INCREMENT Automatische laufende Nummer für neue Datensätze

  • modul/m290_guko/learningunits/lu05/theorie/b_constraints.1757869401.txt.gz
  • Zuletzt geändert: 2025/09/14 19:03
  • von gkoch