0Pricing
SQL Academy · Lektion

NOT-NULL- und CHECK-Constraints

Verbieten Sie fehlende Werte mit NOT NULL und validieren Sie Domänenregeln mit CHECK (price > 0, status IN ('active','archived')).

NOT-NULL- und CHECK-Constraints ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Constraints?

Constraints verlagern die Validierung IN die Datenbank. Der Vorteil ist enorm: Jede App, jedes Skript und jede Ad-hoc-Abfrage schreibt gültige Daten – oder schlägt eindeutig fehl.

NOT NULL

Die einfachste Constraint: Diese Spalte muss einen Wert enthalten:

CREATE TABLE users (
  id    BIGSERIAL PRIMARY KEY,
  email VARCHAR(255) NOT NULL,
  age   INT                                  -- NULL allowed
);

NOT NULL nachträglich hinzufügen

Füllen Sie zunächst die vorhandenen Werte nach und fügen Sie dann die Constraint hinzu:

UPDATE users SET email = 'unknown@example.com' WHERE email IS NULL;
ALTER TABLE users ALTER COLUMN email SET NOT NULL;

CHECK-Constraint

Ein beliebiger boolescher Ausdruck, den jede Zeile erfüllen muss:

CREATE TABLE products (
  id BIGSERIAL PRIMARY KEY,
  name TEXT NOT NULL,
  price NUMERIC(10,2) NOT NULL CHECK (price > 0),
  discount NUMERIC(5,2) DEFAULT 0 CHECK (discount BETWEEN 0 AND 100)
);

CHECK mit Enum-ähnlichen Werten

Beschränken Sie eine Spalte auf eine feste Wertemenge:

CREATE TABLE orders (
  id BIGSERIAL PRIMARY KEY,
  status TEXT NOT NULL
    CHECK (status IN ('pending','paid','shipped','cancelled'))
);

NULL besteht CHECK stillschweigend

Eine CHECK-Constraint ist erfüllt, wenn der Ausdruck NULL (unbekannt) ergibt. Kombinieren Sie sie mit NOT NULL, wenn Sie eine verbindliche Garantie benötigen:

CREATE TABLE invoices (
  amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);

CHECK über mehrere Spalten

Sie können auf mehrere Spalten verweisen:

CREATE TABLE bookings (
  start_at TIMESTAMPTZ NOT NULL,
  end_at   TIMESTAMPTZ NOT NULL,
  CHECK (start_at < end_at)
);

CHECK nachträglich hinzufügen

Validieren Sie zuerst die vorhandenen Zeilen und fügen Sie dann die Constraint hinzu:

ALTER TABLE products
  ADD CONSTRAINT positive_price CHECK (price > 0);
-- fails if any row violates it

Der NOT-VALID-Trick für große Tabellen

Überspringen Sie den vollständigen Scan zu Beginn und validieren Sie später im Hintergrund:

ALTER TABLE products
  ADD CONSTRAINT positive_price CHECK (price > 0) NOT VALID;
ALTER TABLE products VALIDATE CONSTRAINT positive_price;

Constraints benennen

Benennen Sie Ihre Constraints immer, damit Fehlermeldungen und Migrationen vorhersehbar sind:

ALTER TABLE products
  ADD CONSTRAINT products_price_positive CHECK (price > 0);

Logik nicht in der App duplizieren

Wenn die Datenbank die Regel erzwingt, profitieren alle Codepfade davon – kein „Ich habe die Validierung vergessen“. Behalten Sie doppelte Validierung in der App für die Benutzerfreundlichkeit bei (sofortiges Feedback), aber machen Sie die Datenbank zur maßgeblichen Quelle.

Zusammenfassung

NOT NULL und CHECK schließen die häufigsten fehlerhaften Daten aus.

  • NOT NULL: keine fehlenden Werte
  • CHECK: beliebige Regeln pro Zeile
  • Verwenden Sie NOT VALID + VALIDATE für das Hinzufügen im laufenden Betrieb

Kurzer Test

Was geschieht, wenn Sie CHECK (price > 0) für eine Spalte ohne NOT NULL definieren?

Häufig gestellte Fragen

Ist die Lektion „NOT-NULL- und CHECK-Constraints“ kostenlos?

Ja — der vollständige Text von „NOT-NULL- und CHECK-Constraints“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „NOT-NULL- und CHECK-Constraints“?

Verbieten Sie fehlende Werte mit NOT NULL und validieren Sie Domänenregeln mit CHECK (price > 0, status IN ('active','archived')). Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „NOT-NULL- und CHECK-Constraints“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. NOT-NULL- und CHECK-Constraints
  2. UNIQUE-Constraints und zusammengesetzte Schlüssel
  3. FOREIGN KEY und referenzielle Aktionen
  4. DEFAULT-Werte und generierte Spalten
← Zurück zu SQL Academy