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 itDer 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
- NOT-NULL- und CHECK-Constraints
- UNIQUE-Constraints und zusammengesetzte Schlüssel
- FOREIGN KEY und referenzielle Aktionen
- DEFAULT-Werte und generierte Spalten