Weiter zum Inhalt

Einführung in die SQL-Anweisung ALTER TABLE

In diesem Tutorial lernst du, wie du die ALTER TABLE-Anweisung in SQL einsetzt und anwendest.
Aktualisiert 18. Sept. 2026  · 7 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

In SQL gibt es im Wesentlichen drei Arten von Befehlen:

  • DDL – steht für Data Definition Language und umfasst SQL-Befehle zur Definition der Datenbank, etwa zum Erstellen von Tabellen, Festlegen von Spezifikationen, Ändern von Tabellen usw. Beispiele für DDL sind CREATE, DROP, ALTER usw. Änderungen durch DDL-Befehle lassen sich nicht zurückrollen.

  • DML – steht für Data Manipulation Language und ermöglicht das Ausführen von Select-, Insert-, Update- und Delete-Abfragen. Änderungen durch DML-Befehle können zurückgerollt werden. Beispiele: SELECT, INSERT, UPDATE und DELETE.

  • DCL – steht für Data Control Language und dient zum Festlegen von Rechten, Berechtigungen und weiteren Kontrollen deines Datenbanksystems.

In diesem Tutorial lernst du den Einsatz der Anweisung ALTER TABLE, die zur DDL gehört. Folgende Inhalte werden behandelt:

  • Warum die Anweisung ALTER TABLE benötigt wird
  • Erstellen einer Tabelle in einer PostgreSQL-Datenbank
  • Ausführen verschiedener ALTER TABLE-Anweisungen in PostgreSQL

Hinweis: Dieses Tutorial erklärt nicht das Erstellen von Tabellen, das Einfügen von Daten oder das Abfragen von Daten in PostgreSQL. Wenn du dazu eine Auffrischung brauchst, schau dir diesen Artikel an.

Warum die ALTER TABLE-Anweisung?

Die Anforderungen an eine Datenbank ändern sich mit der Zeit. Du musst zum Beispiel eine Spalte zu einer Tabelle hinzufügen oder einen Primärschlüssel ergänzen. Eventuell möchtest du auch den Datentyp einer Spalte ändern. Eine Tabelle zu droppen und komplett neu zu erstellen, ist oft keine Option. Mit ALTER TABLE erledigst du all das nahtlos. Mit ALTER TABLE kannst du:

  • Eine Spalte hinzufügen, ändern oder entfernen
  • Eine Constraint hinzufügen oder entfernen

Du kannst Constraints auch aktivieren/deaktivieren, das liegt jedoch außerhalb dieses Tutorials.

Die oben genannten Anwendungsfälle schauen wir uns gleich an. Zuerst brauchst du jedoch eine Tabelle in PostgreSQL, um loszulegen. Im nächsten Abschnitt erstellst du eine einfache Tabelle.

Erstellen einer Tabelle in einer PostgreSQL-Datenbank

Du erstellst in PostgreSQL (mit dem Tool pgAdmin) eine Tabelle namens student_details mit folgenden Spalten und Datentypen:

  • student_id (integer)
  • student_full_name (character)
  • student_year (integer)

Du startest mit dieser Tabelle mit nur drei Spalten. Im Verlauf des Tutorials fügst du weitere Spalten hinzu und nimmst verschiedene Änderungen vor. Die folgende CREATE-Abfrage erzeugt eine Tabelle nach den obigen Spezifikationen:

CREATE TABLE student_details(
 student_id SERIAL,
 student_full_name VARCHAR (50),
 student_year VARCHAR (100)
);

Lass uns auch ein paar Datensätze einfügen:

  • INSERT INTO student_details(student_full_name, student_year) VALUES('John Doe','1st');
  • INSERT INTO student_details(student_full_name, student_year) VALUES('Chris Villa','3rd');

Da der Datentyp von student_id auf SERIAL gesetzt ist, erhöht PostgreSQL den Spaltenwert automatisch, und der Datentyp wird standardmäßig als integer interpretiert.

Die Tabelle student_details sollte so aussehen:

Table of student_details

Damit ist die Tabelle in PostgreSQL eingerichtet. Schauen wir uns nun im nächsten Abschnitt verschiedene Einsatzmöglichkeiten von ALTER TABLE an.

Verschiedene ALTER TABLE-Anweisungen in PostgreSQL ausführen

In diesem Abschnitt nutzt du ALTER TABLE auf zwei der oben genannten Arten:

  • Spalten hinzufügen, ändern und löschen
  • Constraints hinzufügen und löschen

Spalte hinzufügen, ändern oder löschen

Beginnen wir damit, eine weitere Spalte namens student_grade (vom Typ character) zur Tabelle hinzuzufügen:

ALTER TABLE student_details ADD student_grade VARCHAR(5);

Jetzt sollte die Tabelle so aussehen:

Table of student_details with student_grade column

Beachte, dass für die bereits vorhandenen Einträge die Werte in der Spalte student_grade null sind. Das wird in den meisten RDBMS implizit so gesetzt. Natürlich kannst du per UPDATE-Abfrage Werte nachtragen. Sehen wir uns nun an, wie du mit ALTER TABLE eine Spalte änderst. Du reduzierst die maximal zulässige Länge der Spalte student_year von 100 auf 10, denn für Werte wie 1st, 2nd oder 3rd wäre zu viel Platz vergeudet.

ALTER TABLE student_details ALTER COLUMN student_year TYPE VARCHAR(10);

Das Ergebnis siehst du in der folgenden Abbildung:

Table of student_details with student_year (10)

Du kannst auch eine Spalte umbenennen. So geht's:

ALTER TABLE student_details RENAME student_id TO student_roll;

Die obige Abfrage benennt die Spalte student_id in student_roll um. Du kannst das mit einer SELECT-Abfrage prüfen, dein Ergebnis sollte ähnlich wie in der folgenden Abbildung aussehen:

Table of student_details with renamed column to student_roll

So entfernst du eine Spalte aus einer Tabelle:

ALTER TABLE student_details DROP COLUMN student_year;

Die Abfrage entfernt die Spalte student_year, und die Tabelle sieht danach so aus:

Table of student_details after dropping student_year column

Beachte, dass es zu Verletzungen der referenziellen Integrität kommen kann, wenn die zu löschende Spalte in einer anderen Tabelle referenziert wird.

Als Nächstes fügst du Constraints hinzu bzw. entfernst sie wieder.

Constraint hinzufügen und löschen.

Die Tabelle student_details hat noch keinen Primärschlüssel. Ein Primärschlüssel kombiniert die Constraints NOT NULL und UNIQUE. Lege nun die Spalte student_roll (zuvor student_id) als Primärschlüssel von student_details fest:

ALTER TABLE student_details ADD PRIMARY KEY (student_roll);

Du kannst auch andere Constraints hinzufügen, zum Beispiel ein CHECK-Constraint für die Spalte student_grade, sodass deren Werte immer A, B oder C sind.

ALTER TABLE student_details ADD CONSTRAINT year_check CHECK (student_grade IN ('A', 'B', 'C'));

year_check ist der Name des Constraints, das du zur Tabelle hinzufügst. Wenn du nun den folgenden Eintrag einfügst, solltest du einen Fehler erhalten:

INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd');

Der Fehler sieht so aus:

error result

Das Löschen eines Constraints funktioniert ähnlich. Du musst den Namen des zu löschenden Constraints angeben. Löschen wir nun das Constraint mit dem Namen year_check:

ALTER TABLE student_details DROP CONSTRAINT year_check;

Prüfen wir das. Wenn das Constraint year_check tatsächlich entfernt wurde, sollte diese Abfrage INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd'); keinen Fehler mehr verursachen. Die Tabelle enthält den Datensatz nun:

final table

Du kannst auch mit weiteren CHECK-Constraints experimentieren.

Das war's mit diesem Tutorial!

Dieses Tutorial hat dir die Anweisung ALTER TABLE vorgestellt, mit der du das Schema einer Tabelle gezielt ändern kannst. Wenn du deine SQL-Kompetenzen aufs nächste Level bringen möchtest, könnten dich diese DataCamp-Kurse interessieren:

Themen
SQL

Kurse zu SQL

Kurs

Explorative Datenanalyse in SQL

4 Std.
187.1K
Dieser Kurs zeigt, wie Datenbanken aus Tabellen aufgebaut sind, welche Beziehungen zwischen ihnen bestehen und wie Daten gespeichert werden.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow