Kurs
SQL DDL-Befehle: Der endgültige Leitfaden
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 |
|
Erstelle eine Tabelle und ihre Spalten zusammen mit ihrem Datentyp. |
|
|
Ändere Spaltennamen und füge eine Spalte hinzu oder lösche sie. |
|
|
Ändere den Namen der Tabelle. |
|
|
Füge dem SQL-Code eine Erklärung hinzu, damit andere Teammitglieder ihn überprüfen können. |
|
|
Daten aus einer Tabelle entfernen, ohne die Tabelle zu löschen. |
|
|
Lösche die Tabelle mit ihren Daten. |
|
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 Tabelleactor_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, ALTER
zu 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:
- Lerne die verschiedenen Arten von Befehlen für die Arbeit mit SQL
- Halte einen SQL-Spickzettel bereit, um dich mit den besten Praktiken und häufig verwendeten Befehlen vertraut zu machen.
- Bereite dich auf ein SQL-Interview vor mit unserem Top SQL Interview Guide
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.
Setze deine SQL-Reise heute fort!
Kurs
Introduction to SQL
Kurs