CodeGym /Kurse /SQL SELF /Spalten zu einer Tabelle hinzufügen und löschen

Spalten zu einer Tabelle hinzufügen und löschen

SQL SELF
Level 18 , Lektion 0
Verfügbar

Stell dir vor, du entwirfst gerade eine Datenbank für eine Uni. Am Anfang hat die Studententabelle nur zwei Felder: ID und Name. Easy, die Studis nutzen das System. Aber nach einem Monat kommen die Dozenten zu dir und sagen: "Kannst du noch das Alter hinzufügen?", und kurz darauf: "Wir brauchen noch eine Email." Und dann: "Lass uns doch endlich das Feld middle_name rauswerfen, das füllt eh niemand aus!" Genau hier brauchst du Skills mit ALTER TABLE, um Spalten hinzuzufügen oder zu löschen.

Syntax zum Hinzufügen von Spalten

Also, um eine neue Spalte zu einer bestehenden PostgreSQL-Tabelle hinzuzufügen, benutzt man ALTER TABLE. Hier die Syntax:

ALTER TABLE table_name
ADD COLUMN column_name data_type [constraints];
  • table_name — der Name der Tabelle, zu der du eine neue Spalte hinzufügen willst.
  • column_name — der Name der Spalte, die du hinzufügen willst.
  • data_type — der Datentyp, z.B. VARCHAR, INTEGER oder DATE.
  • constraints (optional) — Einschränkungen, die du auf diese Spalte legen willst, z.B. NOT NULL, DEFAULT usw.

Beispiel: Neue Spalte hinzufügen

Angenommen, wir haben eine Tabelle students, die vorher so erstellt wurde:

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

Jetzt kommt die Aufgabe, eine Spalte age für das Alter der Studierenden hinzuzufügen. So geht's:

ALTER TABLE students
ADD COLUMN age INTEGER;

Jetzt sieht die Struktur der Tabelle students so aus:

id name age
1 Eva NULL
2 Alex NULL

Wenn du neue Einträge ohne Altersangabe hinzufügst, setzt PostgreSQL automatisch NULL, weil wir keine Einschränkungen wie NOT NULL oder einen Standardwert (DEFAULT) angegeben haben.

Syntax zum Löschen von Spalten

Das Löschen einer Spalte aus einer Tabelle läuft auch über ALTER TABLE. Hier die Syntax:

ALTER TABLE table_name
DROP COLUMN column_name [RESTRICT | CASCADE];
  • table_name — der Name der Tabelle, aus der du die Spalte löschen willst.
  • column_name — der Name der Spalte, die gelöscht wird.
  • RESTRICT — verhindert das Löschen, wenn es Abhängigkeiten gibt (Standard).
  • CASCADE — löscht die Spalte samt aller Abhängigkeiten.

Über das Löschen mit CASCADE und was das alles mit sich bringt, erzähle ich dir im nächsten Level :P

Beispiel: Unnötige Spalte löschen

Zurück zur Tabelle students. Wir haben entschieden, dass das Feld age nicht mehr gebraucht wird. Also löschen wir es:

ALTER TABLE students
DROP COLUMN age;

Jetzt ist die Struktur der Tabelle wieder schlanker:

id name
1 Eva
2 Alex

Nützliche Beispiele

Spalte mit Constraints hinzufügen

Und wenn du die Spalte age doch mit NOT NULL und einem Standardwert hinzufügen willst? Dann passt folgender Code:

ALTER TABLE students
ADD COLUMN age INTEGER NOT NULL DEFAULT 18;

Jetzt wird in allen bestehenden Zeilen für die Spalte age der Wert 18 gesetzt, und neue Einträge brauchen zwingend einen Wert für dieses Feld, außer du nutzt den Standardwert.

Spalte mit Abhängigkeiten löschen

Wenn eine Spalte Abhängigkeiten hat (z.B. sie wird in Views oder Triggern verwendet), musst du den Modifier CASCADE benutzen. Aber Vorsicht: Das kann auch andere Objekte in deiner DB betreffen. Zum Beispiel:

ALTER TABLE students
DROP COLUMN email CASCADE;

Typische Fehler und Besonderheiten

Fehler: Spalte mit falschem Datentyp hinzufügen.
Stell dir vor, du fügst eine Spalte mit Typ INTEGER hinzu, willst aber Text speichern. PostgreSQL versteht das nicht und gibt beim Einfügen einen Fehler aus. Der Datentyp muss immer zum Inhalt passen.

Fehler: Spalte löschen ohne Abhängigkeiten zu beachten.
Zum Beispiel, wenn du eine Spalte löschst, auf die Indizes oder Foreign Keys zeigen, kann PostgreSQL einen Fehler werfen, wenn du nicht CASCADE angibst.

Fehler: Spalte mit Abhängigkeiten löschen. Zum Beispiel, wenn du eine Spalte löschst, auf die Indizes oder Foreign Keys zeigen, kann PostgreSQL einen Fehler werfen, wenn du nicht CASCADE angibst. Du hast es hinzugefügt und tausende Zeilen gelöscht, die auf deine entfernte Spalte verwiesen haben. Die du eigentlich nicht löschen wolltest : (

Besonderheit: Reihenfolge der Änderungen.
Manchmal braucht das Hinzufügen von Spalten mit Constraints ein bisschen Wissen über die Reihenfolge der Aktionen. Wenn du z.B. eine Spalte mit NOT NULL hinzufügst, musst du sie zuerst mit Standardwerten füllen, sonst gibt PostgreSQL einen Fehler aus.

2
Aufgabe
SQL SELF, Level 18, Lektion 0
Gesperrt
Hinzufügen einer neuen Spalte
Hinzufügen einer neuen Spalte
2
Aufgabe
SQL SELF, Level 18, Lektion 0
Gesperrt
Hinzufügen einer Spalte mit Einschränkung
Hinzufügen einer Spalte mit Einschränkung
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION