Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m290_guko:learningunits:lu05:theorie:a_ddl [2026/09/13 21:47] – gkoch | de:modul:m290_guko:learningunits:lu05:theorie:a_ddl [2026/09/14 09:31] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 34: | Zeile 34: | ||
| ==== Zahlen ==== | ==== Zahlen ==== | ||
| - | {{: | + | {{: |
| + | <WRAP center round box 80%> | ||
| ^ Typ ^ Wofür ^ Beispiel in der Tabelle buch ^ | ^ Typ ^ Wofür ^ Beispiel in der Tabelle buch ^ | ||
| | **INT** | Ganze Zahlen ohne Nachkommastellen | //seiten// (350), //buch_id// (1, 2, 3 …) | | | **INT** | Ganze Zahlen ohne Nachkommastellen | //seiten// (350), //buch_id// (1, 2, 3 …) | | ||
| | **DECIMAL(M, | | **DECIMAL(M, | ||
| | **FLOAT** / **DOUBLE** | Kommazahlen mit **ungefährer** Genauigkeit | Messwerte, Sensordaten – bei uns selten | | | **FLOAT** / **DOUBLE** | Kommazahlen mit **ungefährer** Genauigkeit | Messwerte, Sensordaten – bei uns selten | | ||
| + | </ | ||
| <WRAP center round important 80%> | <WRAP center round important 80%> | ||
| Zeile 47: | Zeile 48: | ||
| ==== Text ==== | ==== Text ==== | ||
| - | {{: | + | {{: |
| + | <WRAP center round box 80%> | ||
| ^ Typ ^ Wofür ^ Beispiel in der Tabelle buch ^ | ^ Typ ^ Wofür ^ Beispiel in der Tabelle buch ^ | ||
| | **VARCHAR(n)** | Text mit **variabler** Länge, bis n Zeichen. Der Normalfall für Text. | //titel// als VARCHAR(100) | | | **VARCHAR(n)** | Text mit **variabler** Länge, bis n Zeichen. Der Normalfall für Text. | //titel// als VARCHAR(100) | | ||
| | **CHAR(n)** | Text mit **immer gleicher** Länge | //isbn// als CHAR(13), Ländercodes wie CH oder FR | | | **CHAR(n)** | Text mit **immer gleicher** Länge | //isbn// als CHAR(13), Ländercodes wie CH oder FR | | ||
| | **TEXT** | Sehr lange Texte ohne feste Obergrenze | Inhaltsangabe, | | **TEXT** | Sehr lange Texte ohne feste Obergrenze | Inhaltsangabe, | ||
| + | </ | ||
| Faustregel: **VARCHAR ist die Standardwahl.** CHAR nur, wenn die Länge wirklich immer gleich ist. TEXT nur für lange Fliesstexte. | Faustregel: **VARCHAR ist die Standardwahl.** CHAR nur, wenn die Länge wirklich immer gleich ist. TEXT nur für lange Fliesstexte. | ||
| ==== Datum und Zeit ==== | ==== Datum und Zeit ==== | ||
| - | {{: | + | {{: |
| + | <WRAP center round box 80%> | ||
| ^ Typ ^ Wofür ^ Format ^ | ^ Typ ^ Wofür ^ Format ^ | ||
| - | | **DATE** | Nur ein Datum | 2026-09-07 | | + | | **DATE** | Nur ein Datum | 2026-09-07 |
| + | | **TIME** | Nur eine Zeit | 14:30:00 (hh: | ||
| | **DATETIME** | Datum **und** Uhrzeit | 2026-09-07 14:30:00 | | | **DATETIME** | Datum **und** Uhrzeit | 2026-09-07 14:30:00 | | ||
| | **TIMESTAMP** | Wie DATETIME, kann sich beim Ändern eines Datensatzes automatisch aktualisieren | 2026-09-07 14:30:00 | | | **TIMESTAMP** | Wie DATETIME, kann sich beim Ändern eines Datensatzes automatisch aktualisieren | 2026-09-07 14:30:00 | | ||
| + | | **YEAR** | Ein Jahr | 1965 | | ||
| + | </ | ||
| Die Frage lautet immer: **Brauche ich die Uhrzeit?** Bei einem Erscheinungsdatum nicht (DATE), bei einer Ausleihe schon (DATETIME). | Die Frage lautet immer: **Brauche ich die Uhrzeit?** Bei einem Erscheinungsdatum nicht (DATE), bei einer Ausleihe schon (DATETIME). | ||
| ==== Ja oder Nein ==== | ==== Ja oder Nein ==== | ||
| - | {{: | + | {{: |
| + | <WRAP center round box 80%> | ||
| ^ Typ ^ Wofür ^ Werte ^ | ^ Typ ^ Wofür ^ Werte ^ | ||
| | **BOOLEAN** | Genau zwei Zustände | true/false bzw. 1/0 | | | **BOOLEAN** | Genau zwei Zustände | true/false bzw. 1/0 | | ||
| + | </ | ||
| + | |||
| Beispiel: // | Beispiel: // | ||
| - | ===== Die Tabelle buch im Überblick | + | ===== Beispiel Buch ===== |
| + | |||
| + | {{: | ||
| <WRAP center box round 80%> | <WRAP center box round 80%> | ||
| Zeile 94: | Zeile 104: | ||
| * **Preis als FLOAT** → Rundungsfehler. Nehmen Sie DECIMAL. | * **Preis als FLOAT** → Rundungsfehler. Nehmen Sie DECIMAL. | ||
| * **Telefonnummer als INT** → führende Nullen verschwinden (aus 0791234567 wird 791234567). Telefonnummern sind Text, nicht Zahlen – man rechnet nie damit. | * **Telefonnummer als INT** → führende Nullen verschwinden (aus 0791234567 wird 791234567). Telefonnummern sind Text, nicht Zahlen – man rechnet nie damit. | ||
| - | * **Alles als VARCHAR(255)** → die Datenbank kann nichts mehr prüfen und sortiert falsch. Genau das haben wir oben bei // | ||
| * **Datum als VARCHAR** → man kann weder sortieren noch Zeiträume berechnen. | * **Datum als VARCHAR** → man kann weder sortieren noch Zeiträume berechnen. | ||
| </ | </ | ||
| Zeile 103: | Zeile 112: | ||
| ===== Hinweis ===== | ===== Hinweis ===== | ||
| Jedes DBMS (MySQL, PostgreSQL, Oracle …) bietet leicht unterschiedliche Datentypen. In diesem Modul arbeiten wir mit **MySQL** und beschränken uns auf die hier vorgestellten Typen. | Jedes DBMS (MySQL, PostgreSQL, Oracle …) bietet leicht unterschiedliche Datentypen. In diesem Modul arbeiten wir mit **MySQL** und beschränken uns auf die hier vorgestellten Typen. | ||
| + | Eine detaillierte Übersicht über alle MySQL-Datentypen finden Sie auf der offiziellen Dokumentation: | ||
| ---- | ---- | ||