SQL Constraints sind Regeln für Daten in einer Tabelle, um die Art und Qualität der darin gespeicherten Daten zu kontrollieren. Sie gewährleisten Datenintegrität und Konsistenz. Beispiele für SQL Constraints sind PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL und CHECK. Jeder Constraint hat spezifische Anwendungsfälle und Einschränkungen.

SQL Constraints

SQL Constraints schränken ein, welche Daten in die gesamte Tabelle bzw. vereinzelten Spalten eingegeben werden können und welche nicht. Das gewährleistet die Genauigkeit und Zuverlässigkeit der Daten in der Tabelle. Sollte es zu einer Verletzung der Regeln innerhalb der Tabelle kommen, wird eine Fehlermeldung ausgegeben.  

Constraints können beim Erstellen einer Tabelle (CREATE TABLE) oder beim Bearbeiten einer Tabelle (ALTER TABLE) angelegt werden. Die folgenden Constraints werden häufig in SQL genutzt:

  • NOT NULL – In einer Spalte dürfen keine NULL-Werte enthalten sein.
  • UNIQUE – Alle Werte in einer Spalte müssen unterschiedlich sein.
  • PRIMARY KEY – Ein Primärschlüssel wird angelegt. Jede Zeile in der Tabelle kann dadurch eindeutig identifiziert werden (Eine Kombination aus NOT NULL und UNIQUE).
  • FOREIGN KEY – Ein Sekundärschlüssel wir angelegt. Jede Zeile in einer anderen Tabelle kann eindeutig identifiziert werden.
  • CHECK – Alle Werte einer Spalte erfüllen eine bestimmte Bedingung,
  • DEFAULT – In die Spalte wird ein Standardwert eingesetzt, wenn kein Wert angegeben wird. 

SQL NOT NULL Constraint

Die NOT NULL-Constraint verhindert, dass in eine Spalte einen NULL-Wert eingefügt werden. Sobald die NOT NULL-Beschränkung auf eine Spalte angewendet wurde, kann in dieser Spalte kein Nullwert eingefügt werden. 

Sie erzwingt, dass eine Spalte einen richtigen Wert enthält. Die NOT NULL-Constraint gilt ausschließlich für Spalten und lässt sich nicht automatisch auf die gesamte Tabelle beziehen.

Beispiel: Bei der Bestellung in einem Lieferservice ist es zwingend notwendig, den Nachnamen und die Adresse anzugeben. Daher wird die Bestellungen-Tabelle folgendermaßen aufgebaut:

CREATE TABLE Bestellungen(
	Bestell_ID INT,
	Nachname VARCHAR(30) NOT NULL,
	Vorname VARCHAR(30),
	Adresse VARCHAR(60) NOT NULL
); 

Es wird eine Tabelle namens Bestellungen erstellt. In ihr befinden sich folgende Spalten: 

  • Die Bestell_ID, welche ein Integer (ganze Zahl) ist.
  • Der Nachname, welcher aus einem bis zu 30 Zeichen langem String (Zeichenkette) besteht und nicht leer sein darf (NOT NULL).
  • Der Vorname, welcher aus einem bis zu 30 Zeichen langem String besteht.
  • Die Adresse, welche aus einem bis zu 60 Zeichen langem String besteht und nicht leer sein darf.

SQL UNIQUE Constraint

Die UNIQUE-Constraint setzt voraus, dass alle Werte innerhalb einer Spalte unterschiedlich sein müssen. Es dürfen also keine doppelten Felder innerhalb einer Spalte existieren. Diese Constraint kann sowohl für Spalten als auch für die gesamte Tabelle gelten.

Beispiel: In der Mitarbeiter-Tabelle unseres Unternehmens befindet sich unter anderem die Steuer-Identifikationsnummer. Diese darf logischerweise nicht doppelt vorkommen, da jeder Mensch eine eigene, einzigartige Steuer-ID besitzt.

CREATE TABLE Mitarbeiter(
	Vorname VARCHAR(30),
	Nachname VARCHAR(30),
	Steuer_ID INT UNIQUE
); 

Die Tabelle namens Mitarbeiter wird erstellt. In ihr befinden sich die folgenden Spalten: Vorname und Nachname mit einem jeweils bis zu 30 Zeichen langem String. Steuer_ID, welche ein Integer ist und in der es keine doppelten Werte geben darf (UNIQUE).

SQL PRIMARY KEY Constraint

Die PRIMARY KEY-Constraint weist jeder Zeile in der Tabelle eine eindeutige Identifikation zu. Der PRIMARY KEY muss einen Wert enthalten und es darf innerhalb der Spalte keine Duplikate geben. Es verbindet quasi die NOT NULL- und UNIQUE-Constraints.

Beispiel: Um die beiden Max Müllers in unserem Unternehmen zu unterscheiden, führen wir Mitarbeiter_IDs ein. Jeder Mitarbeiter erhält eine ID und dabei dürfen nicht zwei verschiedene Mitarbeiter dieselbe (oder gar keine) ID besitzen.

CREATE TABLE Mitarbeiter(
    Mitarbeiter_ID INT PRIMARY KEY,	
    Vorname VARCHAR(30),
    Nachname VARCHAR(30)
); 

Die Tabelle namens Mitarbeiter wird erstellt. In ihr befinden sich die folgenden Spalten: Mitarbeiter_ID, welcher ein Integer ist und als Primärschlüssel festgelegt wird. Vorname und Nachname mit einem jeweils bis zu 30 Zeichen langem String.

SQL FOREIGN KEY Constraint

Ein FOREIGN KEY-Constraint weist eine Verbindung zu einer Primärschlüssel-Spalte in einer anderen Tabelle zu.

Beispiel: In Unternehmensdatenbank befinden sich die Tabellen Kunden (enthält Kundendaten) und Bestellungen (enthält Auftragsdaten). In beiden Tabellen müssen Spalten existieren, die eine genaue Zuordnung zwischen Kunden und Auftrag ermöglichen. Daher verweist das Unternehmen auf die Kunden-IDs. 

In der Kunden-Tabelle ist die Kunden-ID der Primärschlüssel. In der Bestellungen-Tabelle kommt als Fremdschlüssel die Spalte Kunden-ID dazu, um dem Kunden eindeutig seinen Auftrag zuzuordnen.

CREATE TABLE Mitarbeiter(
    Mitarbeiter_ID INT PRIMARY KEY,	
    Vorname VARCHAR(30),
    Nachname VARCHAR(30)
); 

Die bestehende Tabelle „Bestellungen“ wird verändert. In dieser Tabelle wird die Spalte „Kunden-ID“ als Fremdschlüssel definiert. Dieser bezieht sich auf (REFERENCES) die Kunden-Tabelle und darin befindliche Spalte „Kunden_ID“. 

SQL CHECK Constraint

Die CHECK-Constraint begrenzt den Wertebereich einer Spalte. Damit sind beschränkte Werte innerhalb einer Spalte zulässig.

Beispiel: Für die Anmeldung in unserem neu entwickelten Horror-Zombie-Shooter müssen die Spieler mindestens 18 Jahre alt sein. Daher ändern wir unsere Benutzer-Tabelle und schränken die Alter-Spalte ein:

ALTER TABLE Benutzer 
ADD CONSTRAINT 18_Jahre CHECK (Alter >= 18);  

Die bestehende Tabelle „Benutzer“ wird verändert. In dieser Tabelle wird die Constraint namens „18_Jahre“ hinzugefügt, welche abfragt, ob die Spalte „Alter“ einen Wert größer oder gleich 18 enthält.

SQL DEFAULT Constraint

Die DEFAULT-Constraint fügt Standardwerte in leere Felder hinein.

Beispiel: In unserem Online Zombie-Shooter sollen alle neu erstellten Accounts Startgeld in Höhe von 50 Kronkorken. 

ALTER TABLE Accounts 
MODIFY Geld INT DEFAULT 50; 

In der bestehenden Tabelle „Accounts“ wird die Spalte „Geld“ verändert. Der Integer-Wert wird standardmäßig auf 50 gesetzt.

ARTIKEL TEILEN

Hast du Fragen? Hinterlasse einen Kommentar!