Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m290_guko:learningunits:lu05:theorie:b_constraints [2025/09/14 18:57] – gkoch | modul:m290_guko:learningunits:lu05:theorie:b_constraints [2025/09/23 20:30] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 26: | Zeile 26: | ||
| - | ===== NOT NULL ===== | + | <WRAP center tip round 80%> |
| - | Mit **NOT NULL** legen Sie fest, dass ein Feld **nicht leer** bleiben darf. | + | [[ 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> | <WRAP box 80% round center> | ||
| <code sql> | <code sql> | ||
| - | CREATE TABLE ort ( | + | CREATE TABLE student |
| - | | + | |
| - | | + | |
| - | vorwahl VARCHAR(12) | + | |
| ); | ); | ||
| </ | </ | ||
| </ | </ | ||
| + | |||
| **Wirkung: | **Wirkung: | ||
| - | Versucht jemand, ohne PLZ oder Ort einen Datensatz einzufügen, | + | Keine zwei Datensätze dürfen dieselbe // |
| + | Die // | ||
| - | ===== PRIMARY KEY – Eindeutige ID ===== | + | ===== AUTO_INCREMENT |
| - | Der **Primärschlüssel (PRIMARY KEY)** identifiziert jeden Datensatz eindeutig. | + | Das Attribut // |
| - | Jede Tabelle kann **nur einen Primärschlüssel** | + | Es wird fast immer zusammen mit dem **Primärschlüssel** |
| + | <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> | <code sql> | ||
| CREATE TABLE ort ( | CREATE TABLE ort ( | ||
| - | plz CHAR(5) NOT NULL, | + | plz CHAR(4) NOT NULL, |
| - | | + | |
| - | vorwahl VARCHAR(12), | + | |
| - | CONSTRAINT pk_plz PRIMARY KEY (plz) | + | |
| ); | ); | ||
| </ | </ | ||
| + | </ | ||
| **Wirkung: | **Wirkung: | ||
| - | Keine zwei Datensätze dürfen dieselbe | + | Versucht jemand, ohne PLZ oder Name einen Datensatz einzufügen, |
| - | Die PLZ darf außerdem nicht leer (NULL) sein. | + | |
| - | ---- | + | ===== UNIQUE – Eindeutige Werte erzwingen ===== |
| + | Mit dem UNIQUE-Constraint stellen Sie sicher, dass in einer Spalte **kein Wert doppelt vorkommen** darf. | ||
| - | ===== 🔢 AUTO_INCREMENT – Automatisch hochzählen ===== | + | Im Gegensatz zum Primärschlüssel (PRIMARY KEY) kann es in einer Tabelle |
| - | Wenn es keine natürliche ID gibt, kann man eine **künstliche ID** verwenden, die automatisch hochzählt. | + | So können Sie zum Beispiel sicherstellen, dass keine zwei Benutzer: |
| + | Beispiel: | ||
| + | |||
| + | <WRAP box 80% round center> | ||
| <code sql> | <code sql> | ||
| - | CREATE TABLE kunde ( | + | CREATE TABLE benutzer |
| - | | + | |
| - | name VARCHAR(50) NOT NULL, | + | email VARCHAR(100) |
| - | email VARCHAR(100), | + | |
| - | | + | |
| ); | ); | ||
| </ | </ | ||
| - | **Wirkung:** | + | In diesem Beispiel muss jede // |
| - | Die Datenbank vergibt bei jedem neuen Datensatz automatisch | + | Versucht man, eine E-Mail-Adresse zweimal einzutragen, wird ein Fehler ausgegeben. |
| - | + | </ | |
| - | ---- | + | |
| - | ===== 📌 Übersicht ===== | + | ===== Übersicht ===== |
| ^ Constraint | ^ Constraint | ||
| | NOT NULL | Spalte darf nicht leer bleiben | | NOT NULL | Spalte darf nicht leer bleiben | ||
| | PRIMARY KEY | Eindeutige ID für jeden Datensatz | | PRIMARY KEY | Eindeutige ID für jeden Datensatz | ||
| | AUTO_INCREMENT | | AUTO_INCREMENT | ||
| + | | NOT NULL | Spalte darf nicht leer bleiben | ||
| + | | UNIQUE | ||
| - | ---- | ||
| - | [[https:// | ||
| - | [[https:// | ||
| - | [[https:// | ||
| ---- | ---- | ||
| [[https:// | [[https:// | ||