Lerne, Datenbankstrukturen professionell zu verwalten: Tabellen erweitern, Constraints setzen und sauber aufräumen – für das IT-Systemmanagement.
Lerne, wie du bestehende Tabellen mit neuen Spalten erweiterst. Verstehe die wichtigsten Datentypen: INTEGER, FLOAT, BOOLEAN, VARCHAR(n) und LONGTEXT.
Mach deine Tabellen robuster: Lerne NOT NULL, DEFAULT-Werte, PRIMARY KEY und AUTO_INCREMENT für eine saubere und konsistente Datenstruktur.
Nicht mehr benötigte Tabellen sauber entfernen. Lerne den DROP TABLE Befehl und warum dabei besondere Vorsicht geboten ist.
Der Härtetest! 10 zufällige Aufgaben aus einem Pool von 50 DDL-Szenarien. Stelle dein Wissen unter Beweis – und übe so lange, bis du alle 50 gemeistert hast.
In der Praxis sind Datenbanken selten von Anfang an perfekt. Anforderungen ändern sich – neue Felder werden benötigt, Datentypen müssen angepasst werden. Genau dafür gibt es DDL – Data Definition Language.
Mitarbeiter. Aktuelle Struktur:| Spalte | Datentyp | Beschreibung |
|---|---|---|
| MitarbeiterID | INTEGER | Eindeutige ID |
| Name | VARCHAR(100) | Vor- und Nachname |
| Abteilung | VARCHAR(50) | Zugehörige Abteilung |
Wir werden diese Tabelle mit ALTER TABLE Schritt für Schritt erweitern.
Mit ALTER TABLE veränderst du die Struktur einer bestehenden Tabelle. Der Unterbefehl ADD fügt eine neue Spalte hinzu.
ALTER TABLE Tabellenname ADD Spaltenname Datentyp;
ALTER TABLE Mitarbeiter ADD Telefon VARCHAR(30);
Nach diesem Befehl hat die Tabelle Mitarbeiter eine neue Spalte Telefon. Bestehende Datensätze erhalten automatisch den Wert NULL (kein Wert) für diese Spalte.
Die Personalabteilung möchte das Einstellungsjahr jedes Mitarbeiters speichern. Füge der Tabelle Mitarbeiter eine neue Spalte Einstellungsjahr als ganzzahligen Wert (INTEGER) hinzu.
Die Buchhaltung benötigt das monatliche Gehalt jedes Mitarbeiters in der Datenbank. Füge der Tabelle Mitarbeiter die Spalte Gehalt als Dezimalzahl (FLOAT) hinzu.
Beim Hinzufügen einer Spalte musst du immer den passenden Datentyp angeben. Er bestimmt, welche Art von Daten gespeichert werden kann.
| Datentyp | Verwendung | Beispielwerte |
|---|---|---|
INTEGER | Ganze Zahlen | 1, 42, -5, 2024 |
FLOAT | Kommazahlen (Dezimalzahlen) | 3.14, 1250.99, -0.5 |
BOOLEAN | Wahrheitswerte: wahr oder falsch | TRUE, FALSE |
VARCHAR(n) | Text mit max. n Zeichen | 'Max Mustermann', 'Berlin' |
LONGTEXT | Beliebig langer Text (z.B. Notizen) | Lange Beschreibungen, Logs |
ALTER TABLE Mitarbeiter ADD Homeoffice BOOLEAN; ALTER TABLE Kunden ADD Email VARCHAR(150); ALTER TABLE Produkte ADD Beschreibung LONGTEXT;
Die IT möchte festhalten, ob ein Mitarbeiter aktuell im Homeoffice tätig ist. Füge der Tabelle Mitarbeiter die Spalte Homeoffice als Wahrheitswert (BOOLEAN) hinzu.
Für den digitalen Versand werden E-Mail-Adressen benötigt. Füge der Tabelle Mitarbeiter die Spalte Email als Text mit maximal 100 Zeichen (VARCHAR(100)) hinzu.
Die Personalakte soll ein freies Notizfeld erhalten. Füge der Tabelle Mitarbeiter die Spalte Notizen als langen Text (LONGTEXT) hinzu – die Länge ist unbegrenzt.
Constraints (Einschränkungen) sind Regeln, die sicherstellen, dass Daten in deiner Tabelle gültig und konsistent sind. Du kannst sie beim Hinzufügen einer neuen Spalte direkt mit angeben.
NOT NULL – Der Wert darf nie leer seinDEFAULT Wert – Automatischer Standardwert bei fehlender AngabePRIMARY KEY – Eindeutiger Identifikator für jeden DatensatzAUTO_INCREMENT – Automatisch aufsteigende Zahl (nur für INTEGER/PRIMARY KEY)Mit NOT NULL legst du fest, dass eine Spalte niemals leer bleiben darf. Beim Einfügen oder Aktualisieren eines Datensatzes muss dieser Wert immer angegeben werden.
ALTER TABLE Tabellenname ADD Spaltenname Datentyp NOT NULL;
-- Jeder Mitarbeiter MUSS eine Abteilung haben: ALTER TABLE Mitarbeiter ADD Abteilungsnr INTEGER NOT NULL;
Die IT-Sicherheitsrichtlinie schreibt vor, dass jeder Mitarbeiter zwingend eine E-Mail-Adresse hinterlegen muss. Füge der Tabelle Mitarbeiter die Spalte Email als VARCHAR(100) hinzu – dieser Wert darf nicht leer (NOT NULL) sein.
Mit DEFAULT gibst du einen automatischen Wert vor, der gesetzt wird, wenn beim Einfügen kein Wert für diese Spalte angegeben wird.
ALTER TABLE Tabellenname ADD Spaltenname Datentyp DEFAULT Wert;
-- DEFAULT für Zahlen: ALTER TABLE Produkte ADD Lagerbestand INTEGER DEFAULT 0; -- DEFAULT für Text (in einfachen Anführungszeichen): ALTER TABLE Bestellungen ADD Status VARCHAR(50) DEFAULT 'Neu'; -- DEFAULT für Wahrheitswert: ALTER TABLE Kunden ADD Premium BOOLEAN DEFAULT FALSE;
Neue Produkte sollen beim Anlegen automatisch einen Lagerbestand von 0 erhalten. Füge der Tabelle Produkte die Spalte Lagerbestand als INTEGER mit dem Standardwert 0 hinzu.
Neue Bestellungen sollen automatisch den Status 'Neu' zugewiesen bekommen. Füge der Tabelle Bestellungen die Spalte Status als VARCHAR(50) mit dem Standardwert 'Neu' hinzu.
Du kannst NOT NULL und DEFAULT zusammen verwenden – das ist sogar sehr empfehlenswert! So stellst du sicher, dass eine Spalte immer einen Wert hat (DEFAULT liefert den Standardwert, NOT NULL erzwingt es).
ALTER TABLE Tabellenname ADD Spaltenname Datentyp NOT NULL DEFAULT Wert;
-- Aktiv-Status: Pflichtfeld, standardmäßig TRUE ALTER TABLE Mitarbeiter ADD Aktiv BOOLEAN NOT NULL DEFAULT TRUE; -- Priorität: Pflichtfeld, Standard-Priorität = 3 ALTER TABLE Tickets ADD Prioritaet INTEGER NOT NULL DEFAULT 3;
Jedes neue Support-Ticket muss zwingend einen Status haben und soll automatisch den Status 'Offen' erhalten. Füge der Tabelle Tickets die Spalte Status als VARCHAR(50) hinzu – sie darf nicht leer sein und hat den Standardwert 'Offen'.
Ein Primary Key (Primärschlüssel) macht jeden Datensatz eindeutig identifizierbar. Es darf keine zwei Datensätze mit dem gleichen Primärschlüsselwert geben – und er darf nicht NULL sein.
MitarbeiterID hat, kannst du sie nachträglich als PRIMARY KEY definieren.ALTER TABLE Tabellenname ADD PRIMARY KEY (Spaltenname);
-- KundenID wird zum Primärschlüssel: ALTER TABLE Kunden ADD PRIMARY KEY (KundenID);
Die Tabelle Mitarbeiter hat noch keinen definierten Primärschlüssel. Lege die Spalte MitarbeiterID als PRIMARY KEY fest, um jeden Mitarbeiter eindeutig identifizieren zu können.
Mit AUTO_INCREMENT weist die Datenbank automatisch eine fortlaufende Zahl zu – du musst die ID nie manuell vergeben. Jeder neue Datensatz erhält die nächsthöhere Zahl (1, 2, 3, ...).
ALTER TABLE Tabellenname ADD id INTEGER AUTO_INCREMENT PRIMARY KEY;
-- Neue ID-Spalte mit automatischer Zählung: ALTER TABLE Systemlog ADD LogID INTEGER AUTO_INCREMENT PRIMARY KEY;
Nach dem Einfügen des ersten Datensatzes erhält er automatisch LogID = 1, der zweite LogID = 2 usw.
Für die neue Rechnungsverwaltung wird eine automatisch hochzählende Rechnungsnummer benötigt. Füge der Tabelle Rechnungen die Spalte RechnungsID als INTEGER mit automatischer Zählung und Primärschlüssel-Eigenschaft hinzu.
Manchmal werden Tabellen nicht mehr gebraucht: nach einer Datenmigration, nach einem Testlauf oder wenn eine alte Struktur durch eine neue ersetzt wurde. Mit DROP TABLE löschst du eine Tabelle vollständig aus der Datenbank.
DROP TABLE Tabellenname;
-- Temporäre Testtabelle löschen: DROP TABLE Testdaten; -- Veraltete Backup-Tabelle entfernen: DROP TABLE Backup_2023;
Der Befehl löscht die Tabelle mit ihrer gesamten Struktur (alle Spalten) und allen enthaltenen Daten. Eine Wiederherstellung ist ohne Backup nicht möglich.
Nach einem Daten-Import wurde die temporäre Hilfstabelle Temp_Import nicht mehr benötigt. Lösche diese Tabelle vollständig aus der Datenbank.
Die Tabelle Testdaten wurde nur während der Entwicklungsphase genutzt. Sie soll jetzt aus der Produktionsdatenbank entfernt werden.
Nach der Datenmigration auf das neue System existiert noch eine veraltete Kundentabelle aus dem Vorjahr: Alt_Kunden_2024. Diese soll gelöscht werden.
Das System wählt 10 zufällige Aufgaben aus einem Pool von 50 DDL-Szenarien aus. Nach jeder Runde kannst du weitere 10 üben – bis alle 50 gemeistert sind.
Die Datenbank-Schemas sind jederzeit auf der rechten Seite sichtbar. Einen Struktur-Tipp erhältst du per Button.
Lade Frage...
| Befehl | Bedeutung |
|---|---|
| ALTER TABLE t ADD s Typ; | Neue Spalte s mit Datentyp hinzufügen |
| ALTER TABLE t ADD s Typ NOT NULL; | Spalte – darf nie leer sein |
| ALTER TABLE t ADD s Typ DEFAULT w; | Spalte mit Standardwert w |
| ALTER TABLE t ADD s Typ NOT NULL DEFAULT w; | Pflichtfeld mit Standardwert |
| ALTER TABLE t ADD PRIMARY KEY (s); | Bestehende Spalte s als PK setzen |
| ALTER TABLE t ADD id INT AUTO_INCREMENT PRIMARY KEY; | Neue auto-ID Spalte |
| Befehl | Bedeutung |
|---|---|
| DROP TABLE t; | Tabelle t vollständig löschen ⚠️ unwiderruflich! |
| Typ | Beschreibung | Beispiel |
|---|---|---|
| INTEGER | Ganze Zahlen | 42, 2024, -5 |
| FLOAT | Kommazahlen | 3.14, 1299.99 |
| BOOLEAN | Wahrheitswert | TRUE, FALSE |
| VARCHAR(n) | Text bis n Zeichen | VARCHAR(50) |
| LONGTEXT | Unbegrenzter Text | – |
| Datentyp | Beispiel |
|---|---|
| INTEGER | DEFAULT 0, DEFAULT 3 |
| FLOAT | DEFAULT 0.0, DEFAULT 19.0 |
| BOOLEAN | DEFAULT TRUE, DEFAULT FALSE |
| VARCHAR(n) | DEFAULT 'Neu', DEFAULT 'EUR' |
Tipp: Groß-/Kleinschreibung bei SQL-Schlüsselwörtern ist egal (ALTER TABLE = alter table), Tabellen- und Spaltennamen werden aber je nach System unterschieden.