Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

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] gkochmodul: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://www.youtube.com/watch?v=NNrkJUK_euE|Constraints kurz erklärt - 0:56min ]]((Quelle: KnowledgeBits Education/YouTube)) 
 +</WRAP>
  
 +
 +===== 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 
-  plz CHAR(5) NOT NULL+  student_id INT PRIMARY KEY
-  ort VARCHAR(50) NOT NULL, +  name VARCHAR(50)
-  vorwahl VARCHAR(12)+
 ); );
 </code> </code>
 </WRAP> </WRAP>
 +
  
 **Wirkung:**   **Wirkung:**  
-Versucht jemand, ohne PLZ oder Ort einen Datensatz einzufügen, meldet die Datenbank einen Fehler.+Keine zwei Datensätze dürfen dieselbe //student_id// haben.   
 +Die //student_id// darf ausserdem nicht leer (NULL) sein.
  
  
-===== PRIMARY KEY – Eindeutige ID ===== +===== AUTO_INCREMENT – Automatisch hochzählen ===== 
-Der **Primärschlüssel (PRIMARY KEY)** identifiziert jeden Datensatz eindeutig.   +Das Attribut //AUTO_INCREMENT// sorgt dafür, dass bei jedem neuen Datensatz der Wert dieser Spalte automatisch um **1 erhöht** wird.   
-Jede Tabelle kann **nur einen Primärschlüssel** haben.+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
 +);
 +</code>
 +Fügt man nun Datensätze ein, vergibt MySQL automatisch fortlaufende Nummern für //kunden_id//:  
 +1, 2, 3, …
 +</WRAP>
 +
 +
 +===== 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, 
-  ort VARCHAR(50) NOT NULL+  name VARCHAR(50) NOT NULL
-  vorwahl VARCHAR(12), +
-  CONSTRAINT pk_plz PRIMARY KEY (plz)+
 ); );
 </code> </code>
 +</WRAP>
  
 **Wirkung:**   **Wirkung:**  
-Keine zwei Datensätze dürfen dieselbe PLZ haben.   +Versucht jemand, ohne PLZ oder Name einen Datensatz einzufügen, meldet die Datenbank einen Fehler.
-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 **mehrere UNIQUE-Spalten** geben.   
-Wenn es keine natürliche ID gibt, kann man eine **künstliche ID** verwendendie automatisch hochzählt.+So können Sie zum Beispiel sicherstellendass keine zwei Benutzer:innen dieselbe E-Mail-Adresse haben.
  
 +Beispiel:
 +
 +<WRAP box 80% round center>
 <code sql> <code sql>
-CREATE TABLE kunde +CREATE TABLE benutzer 
-  kunden_id INT AUTO_INCREMENT+  benutzer_id INT AUTO_INCREMENT PRIMARY KEY
-  name VARCHAR(50) NOT NULL+  email VARCHAR(100) UNIQUE
-  email VARCHAR(100), +  name VARCHAR(50)
-  CONSTRAINT pk_kunde PRIMARY KEY (kunden_id)+
 ); );
 </code> </code>
  
-**Wirkung:**   +In diesem Beispiel muss jede //email// **eindeutig** sein.   
-Die Datenbank vergibt bei jedem neuen Datensatz automatisch eine neue Nummer (12, 3, …) +Versucht man, eine E-Mail-Adresse zweimal einzutragenwird ein Fehler ausgegeben. 
- +</WRAP>
-----+
  
-===== 📌 Übersicht =====+===== Übersicht =====
 ^ Constraint         ^ Bedeutung                                           ^ ^ Constraint         ^ Bedeutung                                           ^
 | 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      | Automatische laufende Nummer für neue Datensätze    | | AUTO_INCREMENT      | Automatische laufende Nummer für neue Datensätze    |
 +| NOT NULL            | Spalte darf nicht leer bleiben                       |
 +| UNIQUE      | Wert darf in einer Spalte nur einmal vorkommen    |
  
----- 
  
-[[https://www.w3schools.com/sql/sql_constraints.asp|W3Schools: SQL Constraints]]   
-[[https://www.w3schools.com/sql/sql_primarykey.asp|W3Schools: PRIMARY KEY]]   
-[[https://www.w3schools.com/sql/sql_notnull.asp|W3Schools: NOT NULL]] 
  
 ---- ----
 [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]]
  
  • modul/m290_guko/learningunits/lu05/theorie/b_constraints.1757869065.txt.gz
  • Zuletzt geändert: 2025/09/14 18:57
  • von gkoch