Direkt zum Inhalt

SQL DDL-Befehle: Der endgültige Leitfaden

Lerne die SQL DDL-Befehle kennen und erfahre, wie sie helfen, die Struktur von Datenbankobjekten zu definieren und zu verwalten.
Aktualisierte 16. Jan. 2025  · 11 Min. Lesezeit

SQL ist für Data Scientists und Data Engineers unerlässlich, um Erkenntnisse aus Datenbanken zu gewinnen. Eine Datenbank besteht aus mehreren Tabellen, und es gibt verschiedene SQL-Varianten, von PostgreSQL bis Snowflake.

Die Befehle der Data Definition Language (DDL) in SQL werden verwendet, um die Struktur von Datenbankobjekten zu definieren und zu verwalten. In diesem Artikel erkläre ich DDL-Befehle in SQL anhand von Beispielen in einer Filmdatenbank. Lass uns loslegen!

Was sind DDL-Befehle in SQL?

Mit den Befehlen der Data Definition Language (DDL) kann ich ein Schema in SQL definieren und verwalten. Kurz gesagt ist ein Schema in SQL ein Plan, der definiert, wie Daten in einer Datenbank organisiert sind und wie die Beziehungen zwischen den verschiedenen Tabellen in der Datenbank verwaltet werden.

DDL-Befehle bestehen aus verschiedenen Befehlen, die unterschiedliche Funktionen haben, die ich in der folgenden Reihenfolge besprechen werde:

DDL-Befehl

BESCHREIBUNG

SYNTAX

CREATE

Erstelle eine Tabelle und ihre Spalten zusammen mit ihrem Datentyp.

CREATE TABLE

ALTER

Ändere Spaltennamen und füge eine Spalte hinzu oder lösche sie.

ALTER TABLE

RENAME

Ändere den Namen der Tabelle.

RENAME TABLE

COMMENT

Füge dem SQL-Code eine Erklärung hinzu, damit andere Teammitglieder ihn überprüfen können.

--

/* …

…*/

TRUNCATE

Daten aus einer Tabelle entfernen, ohne die Tabelle zu löschen.

TRUNCATE TABLE

DROP

Lösche die Tabelle mit ihren Daten.

DROP TABLE

DDL-Befehle in SQL mit Beispielen

Nachdem wir nun ein grundlegendes Verständnis der DDL-Befehle und ihres Zwecks haben, wollen wir einige praktische Beispiele mit der Datenbank Movies untersuchen.

CREATE-Befehl in SQL

Wenn ich eine neue Tabelle erstellen muss, verwende ich den Befehl CREATE TABLE wie unten dargestellt:

CREATE TABLE table_name (
    column_1 datatype,
    column_2 datatype,
    ...,
    column_n datatype
);

Im obigen Beispiel habe ich Spalten mit unterschiedlichen Datentypen definiert. SQL unterstützt verschiedene Datentypen, wobei die gängigsten Typen in der Regel STRING (Text), INT (ganze Zahlen), FLOAT (Dezimalzahlen) und DATE (Datum) sind.

Wenn ich zum Beispiel die Tabelle actor erstellen möchte, verwende ich CREATE TABLE als solche:

CREATE TABLE actor (
    actor_id String(32767),
    first_name String(32767),
    last_name String(32767),
    last_update String(32767)
);

Wo:

  • actor ist der Name der Tabelle
  • actor_id ist ein Spaltenname, dessen Inhalt im Textformat (String) erwartet wird und nicht länger als 32767 Zeichen sein darf.
  • first_name ist ein Spaltenname, dessen Inhalt im Textformat (String) erwartet wird und nicht länger als 32767 Zeichen sein darf.
  • last_name ist ein Spaltenname, dessen Inhalt im Textformat (String) erwartet wird und nicht länger als 32767 Zeichen sein darf.
  • last_update ist ein Spaltenname, dessen Inhalt im Textformat (String) erwartet wird und nicht länger als 32767 Zeichen sein darf.

Sobald ich die Abfrage ausführe, ist die neue Tabelle zusammen mit den anderen Tabellen sichtbar, sodass ich sie jederzeit abfragen kann.

ALTER-Befehl in SQL

Mit ALTER in SQL kann ich eine Tabelle aktualisieren, ohne eine neue Tabelle erstellen und die alte löschen zu müssen. Unternehmen können Tausende von Tabellen haben, und es ist wichtig zu wissen, wie man die Daten auf dem neuesten Stand hält, ohne Datenverluste zu riskieren.

Es ist wichtig zu wissen, dass es eine Vielzahl von Möglichkeiten gibt, ALTERzu nutzen - unter anderem:

  • Hinzufügen neuer Spalten in einer Tabelle
  • Umbenennen von Spalten in einer Tabelle
  • Ändern von Spalten in einer Tabelle
  • Fallenlassen von Spalten in einer Tabelle

ADD-Befehl in ALTER

Um eine neue Spalte mit ALTER hinzuzufügen, kombinieren wir den Befehl ALTER mit dem Befehl ADD, wie unten dargestellt:

ALTER TABLE table_name ADD column_name datatype;

Hier fügen wir eine neue Spalte nationality mit dem Datentyp STRING zur Tabelle der Akteure hinzu.

ALTER TABLE actor ADD nationality String(32767);

Alle ALTER Befehle in SQL folgen einer ähnlichen Struktur, was SQL zu einer natürlich zu erlernenden und zu beherrschenden Programmiersprache macht.

RENAME-Befehl in ALTER

Wenn ich einen Spaltennamen ändern muss, verwende ich den Befehl RENAME in ALTER wie folgt:

ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;

Ändern wir zum Beispiel den Spaltennamen last_name in family_name, um sicherzustellen, dass es keine Verwechslung gibt, ob es sich um einen mittleren Namen oder einen Nachnamen handelt. In diesem Fall werde ich Folgendes abfragen:

ALTER TABLE actor RENAME COLUMN last_name TO family_name;

MODIFY-Befehl in ALTER

Datentypen definieren Spalteneigenschaften und beeinflussen die Qualität der Daten. Zum Beispiel wurde last_update auf String(text) eingestellt, aber die Daten zeigen deutlich, dass es sich um Datum und Uhrzeit handelt.

Wenn du dir die verschiedenen Datentypen ansiehst und dich auf die Daten in der Spalte beziehst, ist der passende Datentyp TIMESTAMP.

Die Aktualisierung des Datentyps einer Spalte erleichtert die Aggregation und Filterung der Daten nach Datum mit anderen SQL-Befehlen. So verwenden wir MODIFY in SQL:

ALTER TABLE table_name ALTER COLUMN column_name datatype;

Wenn ich die obigen Angaben in last_update einbeziehe, verwende ich die folgende Abfrage:

ALTER TABLE actor ALTER COLUMN last_update TIMESTAMP;

DROP-Befehl in ALTER

Die letzte Option, die ALTER bietet, ist das Fallenlassen einer Spalte. Es gibt zahlreiche Gründe, warum ich eine Kolumne auf DROP veröffentlichen sollte, unter anderem:

  • Informationen, die nicht mehr relevant sind,
  • Doppelte Informationen, wenn dieselbe Spalte in einer anderen Tabelle zu finden ist,
  • Probleme mit der Datenqualität,
  • Optimiere den Speicherplatz.

Das Löschen einer Spalte in SQL ist einfach, aber es ist mit Vorsicht zu genießen, denn es ist nicht immer möglich, die Aktion "Spalte löschen" rückgängig zu machen.

ALTER TABLE table_name DROP COLUMN column_name;

Der Befehl zum Löschen einer Spalte ist ähnlich wie das Umbenennen einer Spalte, aber die beiden sind nicht das Gleiche. Wenn du den Spaltennamen umbenennst, bleiben die Daten in der Spalte erhalten, aber die Überschrift wird geändert. Mit dem Befehl DROP hingegen werden sowohl die Daten als auch die Überschrift entfernt, als ob die Spalte nie existiert hätte.

Nachdem ich festgestellt habe, dass die Spalte last_update nur wenig Informationen darüber liefert, ob die Datenbank aktualisiert wurde, habe ich beschlossen, sie mit der folgenden Abfrage zu löschen:

ALTER TABLE actor DROP COLUMN last_update; 

RENAME-Befehl in SQL

Der Befehl RENAME bezieht sich nur auf die Änderung des Tabellennamens und ist nicht zu verwechseln mit der Funktion ALTER' RENAME. Um den Namen einer Tabelle zu ändern, ist die Abfrage ganz einfach:

RENAME TABLE old_table_name TO new_table_name;

Die Tabelle actor enthält nur Namen und keine weiteren Informationen über die Akteure. Daher ist es sinnvoll, dies zu verdeutlichen, indem du den Namen der Tabelle änderst in:

RENAME TABLE actor TO actor_names;

KOMMENTAR in SQL

Kommentare in SQL sind wichtig für die Klarheit und den Kontext, damit deine Abfragen leichter zu verstehen und zu pflegen sind. Es hilft, komplexe Logik zu erklären, Änderungen zu dokumentieren und bestimmte Entscheidungen zu rechtfertigen. In SQL kannst du auf zwei Arten Kommentare hinzufügen:

  • Einzeilige Kommentare
  • Mehrzeilige Kommentare

Lass sie uns in Aktion sehen.

Einzeilige Kommentare in SQL

Das Kommentieren einer einzelnen Zeile wird normalerweise neben dem Code gemacht, wie unten. So kann ich den Kommentar eines Kollegen lesen, während ich den Code lese.

In der Tabelle actor sind actor_id und last_update nicht intuitiv und müssen durch einen Kommentar erläutert werden.

CREATE TABLE actor (
 actor_id String(32767), --unique identifier
 first_name String(32767),
 last_name String(32767),
 last_update String(32767)--datetime of last update
);

Das Kommentieren in SQL ist ein anderer Befehl als die anderen in diesem Artikel, weil er keine Funktion COMMENT aufruft. Die zwei Bindestriche ohne Leerzeichen zwischen '--' zeigen den Beginn eines Kommentars an. Alles, was danach geschrieben wird, wird nicht als Teil des Codes betrachtet.

Mehrzeilige Kommentare in SQL

Wenn die Erklärung länger ist, verwende mehrzeilige Kommentare. Dies wird bevorzugt, um eine Funktion zu erklären oder einen detaillierten Kontext zu liefern. Um einen mehrzeiligen Kommentar in SQL hinzuzufügen, beginne mit /* und ende mit */. Die SQL-Engine ignoriert alles, was zwischen /* und */ geschrieben wird, und wird nicht als Teil der Abfrage ausgeführt.

/* Create a table `actor` with the actors’ names. Store first and last name, and keep track of any updates*/
CREATE TABLE actor (
 actor_id String(32767), --unique internal identifier
 first_name String(32767),
 last_name String(32767),
 last_update String(32767)--datetime of last update
);

TRUNCATE-Befehl in SQL

Eine Tabelle abzuschneiden ist nicht dasselbe wie sie zu löschen. Beim Kürzen werden alle Daten entfernt, aber die Struktur der Tabelle bleibt erhalten, während beim Löschen die gesamte Tabelle einschließlich ihrer Struktur entfernt wird. Es muss darauf geachtet werden, den richtigen Befehl für den entsprechenden Zweck zu wählen.

Das Äquivalent zu TRUNCATE in Excel kannst du erreichen, indem du alle Daten unter dem Spaltennamen markierst und auf Löschen drückst. In SQL, I write:

TRUNCATE TABLE table_name;

Wenn die actor gekürzt werden muss, führe ich sie aus:

TRUNCATE TABLE actor;

Das Ergebnis wäre eine Tabelle, die nur Spaltennamen und keine Werte enthält.

DROP-Befehl in SQL

Im Gegensatz zu TRUNCATE löscht der DDL-Befehl DROP die Tabelle und alle ihre Werte vollständig. Bei der Ausführung solcher Befehle muss man vorsichtig sein, da diese Aktion nicht immer rückgängig gemacht werden kann. Der Befehl DROP hat eine ähnliche Struktur wie die Abfrage TRUNCATE:

DROP TABLE table_name;

Damit das Löschen der Tabelle Akteur ist so einfach wie

DROP TABLE actor;

Auch wenn die verschiedenen SQL-Varianten geringfügige Änderungen in der Syntax erfordern, sind die oben genannten DDL-Befehle weitgehend identisch, egal welche SQL-Version du verwendest.

DDL-Befehle im Vergleich zu anderen Befehlstypen

Im vorherigen Abschnitt habe ich erklärt, wie DDL-Befehle die Struktur von Tabellen definieren und ihren Inhalt oder ihre Eigenschaften bei Bedarf aktualisieren. Andere Arten von SQL-Befehlen ermöglichen das Auswählen, Aggregieren, Aktualisieren und sogar das Verbinden von Tabellen, um eine andere Sicht auf die Daten zu erhalten, und jeder Befehlssatz hat einen bestimmten Zweck.

Befehl

Definition

Zweck

DQL

Datenabfragesprache

Daten aus der Datenbank anhand eines Kriteriums abrufen

DML

Sprache für die Datenbearbeitung

Manipuliere Tabellen in der Datenbank mit mehr Funktionen als ALTER.

DCL

Datenkontrollsprache

Berechtigungskontrollen für Zugang und Befugnisse.

TCL

Transaktionssteuerungssprache

Aktualisiert die Datenbank mit Änderungen, die mit DML-Befehlen geändert wurden

Baue deine SQL-Kenntnisse mit DataCamp aus

Eine gute Datenqualität wird erreicht, wenn die Daten gut definiert und strukturiert sind. DDL-Befehle in SQL helfen Datenexperten dabei, eine strukturierte Datenbank aufzubauen und zu pflegen. Andere SQL-Befehle, wie DML-Befehle, ermöglichen es dir, Daten anzuzeigen, zu aggregieren, einzufügen, zu filtern und zusammenzuführen. Erfahre mehr über SQL und baue deine Kenntnisse aus, indem du die folgenden Ressourcen durchgehst:


Deandra Cutajar's photo
Author
Deandra Cutajar
LinkedIn

Daten- und KI-Experte mit umfangreicher Erfahrung in der Erstellung maßgeschneiderter Data-Science-Modelle unter Verwendung statistischer Techniken sowie fortgeschrittener Modelle wie Zeitreihen, LLM, Neuronale Netze und Graphentheorie.

Themen

Setze deine SQL-Reise heute fort!

Kurs

Data Manipulation in SQL

4 hr
274.1K
Master the complex SQL queries necessary to answer a wide variety of data science questions and prepare robust data sets for analysis in PostgreSQL.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow