CodeGym /Kurse /SQL SELF /Tabellenstruktur ändern mit ALTER TABLE

Tabellenstruktur ändern mit ALTER TABLE

SQL SELF
Level 17 , Lektion 4
Verfügbar

Jetzt ist es an der Zeit, darüber zu sprechen, wie man bereits existierende Tabellen ändert. In einem Projekt bleibt selten alles gleich – Anforderungen können plötzlich kommen, wie ein Bombardilokrokodilo. Zum Beispiel entscheidet der Product Manager plötzlich, dass jeder User eine eindeutige ID für seine Lieblingsprofilhintergrundfarbe braucht. Oder du merkst, dass VARCHAR(50) für den Namen echt nicht reicht, weil schon ein User mit dem Namen "Bombardilokrokodilo-Junior-Der-Dritte" in der Datenbank sitzt.

Kein Problem, in PostgreSQL gibt es dafür ein Tool – den Befehl ALTER TABLE.

ALTER TABLE ist ein Befehl, mit dem du die Struktur bestehender Tabellen ändern kannst. Damit kannst du:

  • Neue Spalten hinzufügen;
  • Unnötige Spalten löschen;
  • Den Datentyp einer Spalte ändern;
  • Tabellen oder deren Spalten umbenennen;
  • Constraints wie NOT NULL, UNIQUE und vieles mehr hinzufügen oder entfernen.

Man kann sagen, es ist so, als hättest du schon ein Haus (Tabelle) gebaut, willst aber jetzt ein neues Zimmer (Spalte) anbauen oder eine unnötige Abstellkammer (Spalte löschen) entfernen.

Syntax von ALTER TABLE

Die allgemeine Struktur des Befehls ist ziemlich intuitiv:

ALTER TABLE tabelle
    änderungs_aktion;

Wobei:

  • tabelle – der Name der Tabelle, die du ändern willst;
  • änderungs_aktion – die konkrete Aktion, die du ausführen willst (zum Beispiel eine Spalte hinzufügen, löschen oder den Datentyp ändern).

Beispiele für die Verwendung von ALTER TABLE

Neue Spalte hinzufügen

Wenn du einer Tabelle eine neue Spalte hinzufügen willst, nutze den Befehl ADD COLUMN. Hier ein Beispiel:

ALTER TABLE students
ADD COLUMN email VARCHAR(100);

Dieser Befehl fügt die neue Spalte email zur Tabelle students hinzu, wo die E-Mail-Adresse des Studenten gespeichert wird. Der Datentyp der Spalte ist ein String mit bis zu 100 Zeichen.

Angenommen, du hast die Tabelle für Studenten erstellt, aber vergessen, das Einschreibedatum hinzuzufügen. So kannst du das nachholen:

ALTER TABLE students
ADD COLUMN enrollment_date DATE;

Jetzt hast du die Spalte enrollment_date und kannst das Einschreibedatum speichern.

Spalte löschen

Wenn du entscheidest, dass eine Spalte nicht mehr gebraucht wird, nutze DROP COLUMN. Zum Beispiel:

ALTER TABLE students
DROP COLUMN email;

Dieser Befehl löscht die Spalte email aus der Tabelle students. Beachte, dass die Daten aus dieser Spalte auch endgültig gelöscht werden.

Wichtiger Punkt:

Wenn du versuchst, eine Spalte zu löschen, die in anderen Tabellen verwendet wird (zum Beispiel als Fremdschlüssel), kann PostgreSQL einen Fehler ausgeben. In solchen Fällen musst du zuerst die Abhängigkeiten entfernen.

Datentyp einer Spalte ändern

Manchmal passt der ursprünglich gewählte Datentyp nicht. Zum Beispiel wolltest du das Alter der Studenten als SMALLINT speichern, merkst aber, dass das nicht reicht, und willst auf BIGINT umstellen. So geht's:

ALTER TABLE students
ALTER COLUMN age TYPE BIGINT;

Wichtiger Punkt: Wenn schon Daten in der Spalte stehen, prüft PostgreSQL, ob sie in den neuen Typ konvertiert werden können. Wenn nicht, bekommst du einen Fehler.

Angenommen, du hast die Spalte description als VARCHAR(100) angelegt, merkst aber, dass Kursbeschreibungen viel länger sein können. Ändere den Typ auf TEXT:

ALTER TABLE courses
ALTER COLUMN description TYPE TEXT;

Jetzt kannst du ausführliche Kursbeschreibungen ohne Längenbegrenzung speichern.

Spalte umbenennen

Wenn du den Namen einer Spalte ändern willst, nutze RENAME COLUMN:

ALTER TABLE students
RENAME COLUMN name TO full_name;

Jetzt heißt die Spalte name full_name.

Tabelle umbenennen

Du kannst auch den Namen der Tabelle selbst ändern. Dafür gibt's RENAME TO:

ALTER TABLE students
RENAME TO university_students;

Jetzt heißt die Tabelle students university_students.

Constraint NOT NULL setzen/löschen

Angenommen, du hast eine Spalte erstellt, aber vergessen, sie als Pflichtfeld (NOT NULL) zu markieren. Kein Problem! Du kannst das Constraint später hinzufügen:

ALTER TABLE students
ALTER COLUMN name SET NOT NULL;

Wenn du das NOT NULL-Constraint entfernen willst, nutze DROP NOT NULL:

ALTER TABLE students
ALTER COLUMN name DROP NOT NULL;

Standardwert setzen

Wenn die Spalte schon existiert, du aber einen Standardwert setzen willst, nutze SET DEFAULT:

ALTER TABLE enrollments
ALTER COLUMN enrollment_date SET DEFAULT CURRENT_DATE;

Um den Standardwert zu entfernen, führe aus:

ALTER TABLE enrollments
ALTER COLUMN enrollment_date DROP DEFAULT;

Wir schauen uns jeden Befehl in den nächsten drei Vorlesungen genauer an. Also, mach dich bereit :)

Typische Fehler bei ALTER TABLE

Bei der Arbeit mit ALTER TABLE können Fehler auftreten. Hier sind die häufigsten:

Versuch, einen Datentyp zu ändern, der nicht mit den aktuellen Daten kompatibel ist. Zum Beispiel: Wenn in der Spalte age schon Daten stehen und du sie in einen String VARCHAR umwandeln willst, gibt's einen Fehler. Lösung: Erst die Daten löschen oder umwandeln.

Versuch, eine Spalte zu löschen, die als Fremdschlüssel oder Index verwendet wird. PostgreSQL lässt das nicht zu, um die Datenintegrität zu erhalten. Vor dem Löschen abhängiger Spalten müssen die Beziehungen entfernt werden.

Syntaxfehler. Der Befehl ALTER TABLE ist ziemlich flexibel, aber du musst die Syntax genau einhalten. Zum Beispiel muss ADD COLUMN immer einen Datentyp enthalten.

Echte Anwendungsszenarien

Im echten Leben wird ALTER TABLE ständig verwendet. Du triffst es zum Beispiel bei:

  • Hinzufügen neuer Daten zu einer bestehenden Tabelle (z.B. neue Spalten);
  • Datenbank-Optimierung (z.B. Datentypen ändern, um Speicherplatz zu sparen);
  • Korrektur von Designfehlern (z.B. wenn du Constraints vergessen oder den falschen Datentyp gewählt hast).

Jetzt weißt du, wie mächtig der Befehl ALTER TABLE ist. Es ist ein starkes Tool, das dir hilft, mit Änderungen im Projekt klarzukommen. Wichtig ist: Sei aufmerksam und überstürze nichts, damit du nicht aus Versehen dein "Haus" (deine Tabelle) kaputt machst, wenn du ein neues Zimmer anbaust.

2
Aufgabe
SQL SELF, Level 17, Lektion 4
Gesperrt
Hinzufügen einer neuen Spalte zur Tabelle
Hinzufügen einer neuen Spalte zur Tabelle
2
Aufgabe
SQL SELF, Level 17, Lektion 4
Gesperrt
Ändern des Datentyps einer Spalte
Ändern des Datentyps einer Spalte
1
Umfrage/Quiz
Grundlagen der Tabellenerstellung, Level 17, Lektion 4
Nicht verfügbar
Grundlagen der Tabellenerstellung
Grundlagen der Tabellenerstellung
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION