Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| de:modul:m290_guko:learningunits:lu05:theorie:b_constraints [2026/08/13 16:06] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m290_guko:learningunits:lu05:theorie:b_constraints [2026/08/13 16:06] (aktuell) – ↷ Seite von modul:m290_guko:learningunits:lu05:theorie:b_constraints nach de:modul:m290_guko:learningunits:lu05:theorie:b_constraints verschoben msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU05b – SQL-DDL: Constraints (Einschränkungen) ====== | ||
| + | |||
| + | ===== Lernziele ===== | ||
| + | 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 | ||
| + | |||
| + | |||
| + | ===== Was sind Constraints? | ||
| + | |||
| + | **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/ | ||
| + | * Der Name eines Kunden darf nicht leer sein | ||
| + | * Die E-Mail-Adresse eines Benutzers soll nur einmal vorkommen | ||
| + | |||
| + | Constraints helfen also, **Datenqualität** sicherzustellen. | ||
| + | |||
| + | |||
| + | <WRAP center tip round 80%> | ||
| + | [[ https:// | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== PRIMARY KEY – Eindeutige ID ===== | ||
| + | Der Primärschlüssel (//PRIMARY KEY//) identifiziert jeden Datensatz eindeutig. | ||
| + | Jede Tabelle kann **nur einen Primärschlüssel** haben. | ||
| + | <WRAP box 80% round center> | ||
| + | <code sql> | ||
| + | CREATE TABLE student ( | ||
| + | student_id INT PRIMARY KEY, | ||
| + | name VARCHAR(50) | ||
| + | ); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | **Wirkung: | ||
| + | Keine zwei Datensätze dürfen dieselbe // | ||
| + | Die // | ||
| + | |||
| + | |||
| + | ===== AUTO_INCREMENT – Automatisch hochzählen ===== | ||
| + | Das Attribut // | ||
| + | Es wird fast immer zusammen mit dem **Primärschlüssel** verwendet, um automatisch eine **eindeutige ID** zu vergeben – ganz ohne manuelles Eingreifen. | ||
| + | |||
| + | <WRAP box center 80% round> | ||
| + | Beispiel: | ||
| + | <code sql> | ||
| + | CREATE TABLE kunden ( | ||
| + | kunden_id INT AUTO_INCREMENT PRIMARY KEY, | ||
| + | name VARCHAR(50) NOT NULL | ||
| + | ); | ||
| + | </ | ||
| + | Fügt man nun Datensätze ein, vergibt MySQL automatisch fortlaufende Nummern für // | ||
| + | 1, 2, 3, … | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== NOT NULL ===== | ||
| + | Mit //NOT NULL// legen Sie fest, dass ein Feld **nicht leer** bleiben darf. | ||
| + | |||
| + | <WRAP box 80% round center> | ||
| + | <code sql> | ||
| + | CREATE TABLE ort ( | ||
| + | plz CHAR(4) NOT NULL, | ||
| + | name VARCHAR(50) NOT NULL | ||
| + | ); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | **Wirkung: | ||
| + | Versucht jemand, ohne PLZ oder Name einen Datensatz einzufügen, | ||
| + | |||
| + | ===== UNIQUE – Eindeutige Werte erzwingen ===== | ||
| + | Mit dem UNIQUE-Constraint stellen Sie sicher, dass in einer Spalte **kein Wert doppelt vorkommen** darf. | ||
| + | |||
| + | Im Gegensatz zum Primärschlüssel (PRIMARY KEY) kann es in einer Tabelle **mehrere UNIQUE-Spalten** geben. | ||
| + | So können Sie zum Beispiel sicherstellen, | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | <WRAP box 80% round center> | ||
| + | <code sql> | ||
| + | CREATE TABLE benutzer ( | ||
| + | benutzer_id INT AUTO_INCREMENT PRIMARY KEY, | ||
| + | email VARCHAR(100) UNIQUE, | ||
| + | name VARCHAR(50) | ||
| + | ); | ||
| + | </ | ||
| + | |||
| + | In diesem Beispiel muss jede //email// **eindeutig** sein. | ||
| + | Versucht man, eine E-Mail-Adresse zweimal einzutragen, | ||
| + | </ | ||
| + | |||
| + | ===== Übersicht ===== | ||
| + | ^ Constraint | ||
| + | | NOT NULL | Spalte darf nicht leer bleiben | ||
| + | | PRIMARY KEY | Eindeutige ID für jeden Datensatz | ||
| + | | AUTO_INCREMENT | ||
| + | | NOT NULL | Spalte darf nicht leer bleiben | ||
| + | | UNIQUE | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | [[https:// | ||