Zurück zur Artikelliste Artikel
7 Leseminuten

Was sind DDL, DML, DQL und DCL in SQL?

Wir gehen auf die Aufteilung von SQL in seine vier Hauptuntersprachen ein und erklären die Bedeutung der einzelnen Sprachen.

Wenn Sie SQL lernen - vielleicht durch den umfassenden Kurs von LearnSQL.de SQL für Anfänger Kurs - sind Sie vielleicht schon auf die Begriffe DDL, DML, DQL und DCL gestoßen. Und vielleicht haben Sie sich von all den Akronymen verwirren lassen. In diesem Artikel werden wir Ihnen erklären, wofür diese Begriffe stehen und wie sie den Untersprachen entsprechen, die die SQL-Sprache in vier Teile aufteilen, die zusammen funktionieren.

Die Unterteilung von SQL in Subsprachen

Structured Query Language, kurz SQL, ist eine umfassende Sprache für die Bearbeitung von Datenbanken. Sie ist die Sprache, die in Datenbanksystemen wie PostgreSQL, MySQL, Microsoft SQL Server und Oracle Database verwendet wird. Jedes dieser Systeme hat seine eigenen Implementierungen der Dutzenden von Befehlen in der SQL-Sprache (d. h. seine eigenen Dialekte), was anfangs überwältigend sein kann.

SQL kann viele verschiedene Dinge tun: Datenbanktabellen erstellen, Datensätze einfügen oder ändern, Indizes hinzufügen, Informationen abrufen und so weiter. Daher kann es sinnvoll sein, SQL in mehrere Untersprachen aufzuteilen; dies hilft uns, all die verschiedenen Operationen zu verstehen, die mit einer SQL-Datenbank durchgeführt werden können. Diese Untersprachen sind:

  • Datenabfragesprache (DQL) - Die Datenabfragesprache ist die Untersprache, die für das Lesen oder Abfragen von Daten aus einer Datenbank zuständig ist. In SQL entspricht dies der SELECT
  • Data Manipulation Language (DML) - Die Data Manipulation Language ist die Untersprache, die für das Hinzufügen, Bearbeiten oder Löschen von Daten in einer Datenbank zuständig ist. In SQL entspricht dies den Sprachen INSERT, UPDATE, und DELETE
  • Datendefinitionssprache (DDL) - Die Datendefinitionssprache ist die Untersprache, die für die Definition der Datenstruktur in einer Datenbank zuständig ist. In SQL entspricht dies der Manipulation von Tabellen durch die CREATE TABLE, ALTER TABLE, und DROP TABLE
  • Data Control Language (DCL) - Die Data Control Language ist die Untersprache, die für die administrativen Aufgaben zur Steuerung der Datenbank selbst zuständig ist, insbesondere für die Erteilung und den Entzug von Datenbankberechtigungen für Benutzer. In SQL entspricht dies u.a. den Befehlen GRANT, REVOKE und DENY.

In den folgenden Abschnitten werden wir diese Untersprachen nacheinander durchgehen und ihre Bedeutung und die Befehle, die sie darstellen, untersuchen. Wenn Sie tiefer in diese Konzepte eintauchen möchten, besuchen Sie unseren interaktiven SQL für Anfänger Kurs auf LearnSQL.de. Er enthält 129 praktische Übungen, mit denen Sie SQL durch Übung erlernen können. Mit jeder gelösten Übung gewinnen Sie an Vertrauen in Ihre SQL-Kenntnisse.

Datenabfragesprache (DQL)

Die Datenabfragesprache (Data Query Language, kurz DQL ) ist die Gruppe von Befehlen, die für die Abfrage von Daten aus einer Datenbank zuständig sind. Der wichtigste DQL-Befehl in SQL ist der Befehl SELECT, mit dem Daten aus einer oder mehreren Tabellen abgefragt werden.

Nehmen wir die folgende Tabelle. Sie enthält Bankkontodaten und heißt Accounts:

IDNameBalance
1John Doe2000
2Sally Swanson1800
3Richard Poor5

Wenn wir die Namen aller Benutzer mit einem Bankkonto abfragen wollten, würden wir diesen SELECT Befehl verwenden:

SELECT Name 
FROM Accounts

Der obige Befehl ist eine typische Anweisung aus der Subsprache DQL. Was aber, wenn wir die Namen aller Benutzer mit einem Guthaben von mehr als 1500 $ abrufen wollen? In diesem Fall müssen wir der Anweisung die Klausel WHERE hinzufügen:

SELECT Name 
FROM Accounts 
WHERE Balance > 1500

Einzelheiten zum Befehl SELECT (und vieles mehr) finden Sie in unserem SQL für Anfänger Cheat Sheet.

Datenmanipulationssprache (DML)

Die Data Manipulation Language, kurz DML , ist die Gruppe von Befehlen, die für die Manipulation von Daten in einer Datenbank verantwortlich sind; dies beinhaltet im Allgemeinen das Einfügen, Bearbeiten oder Löschen von Zeilen in SQL-Tabellen.

Der SQL-Befehl zum Einfügen einer neuen Zeile in eine Tabelle ist der Befehl INSERT. Wenn wir der Tabelle eine Zeile hinzufügen wollen Accounts Tabelle eine Zeile für einen Benutzer namens Evan Johnson mit einem Guthaben von 3200 $ hinzufügen möchten, würden wir etwa so vorgehen:

INSERT INTO Accounts (Name, Balance) 
VALUES (‘Evan Johnson’, 3200)

Wenn Evan irgendwann in der Zukunft eine Abhebung von 200 $ vornimmt, müssen wir seinen Kontostand auf 3000 $ aktualisieren. Um Evans Bankkontodatensatz zu bearbeiten, müssen wir den Befehl UPDATE verwenden:

UPDATE Accounts SET Balance = 3000 
WHERE Name = ‘Evan Johnson’

Wenn Evan schließlich beschließt, sein Konto bei unserer Bank aufzulösen, müssen wir seinen Eintrag in der Tabelle Accounts Tabelle löschen. Um dies zu erreichen, müssen wir den Befehl DELETE verwenden:

DELETE FROM Accounts 
WHERE Name = ‘Evan Johnson’

Die oben beschriebenen Befehle (INSERT, UPDATE und DELETE) stellen die wichtigsten SQL-Operationen zur Datenmanipulation dar und bilden somit die Datenmanipulationssprache. Um mehr über diese Befehle zu erfahren, können Sie den Artikel SQL INSERT, SQL UPDATE, SQL DELETE - Oh My! lesen oder den Wie man Daten in einer Datenbank in SQL ändert Kurs gleich hier auf LearnSQL.de besuchen.

Datendefinitionssprache (DDL)

Die Datendefinitionssprache (Data Definition Language, DDL ) besteht aus den Befehlen, die für das Erstellen, Bearbeiten und Löschen von SQL-Tabellen zuständig sind. Diese Befehle sind CREATE TABLE, ALTER TABLE und DROP TABLE.

In den obigen Beispielen haben wir mit der Tabelle Accounts Tabelle, die bereits eine Struktur und Datensätze hatte. Aber wie würden wir diese Tabelle überhaupt erst erstellen? Dazu müssen wir den Befehl CREATE TABLE verwenden:

CREATE TABLE Accounts (
	ID INT,
	Name VARCHAR(255),
	Balance INT
)

Was wäre, wenn wir die Tabelle so bearbeiten wollten, dass sie eine Spalte zur Speicherung der Telefonnummern der Kontoinhaber enthält? Dann würden wir den Befehl ALTER TABLE verwenden:

ALTER TABLE Accounts
ADD Phone VARCHAR(255)

Wenn wir die Tabelle schließlich ganz löschen wollen Accounts Tabelle ganz löschen wollen, verwenden wir den Befehl DROP TABLE:

DROP TABLE Accounts

Diese Befehle haben weitaus mehr Funktionen als die oben aufgeführten, und ihre spezifische Syntax variiert in der Regel zwischen den SQL-Dialekten. Wenn Sie mehr darüber erfahren möchten, nehmen Sie an unserem Kurs Erstellen von Datenbankstrukturen teil oder lesen Sie Was ist ein SQL-Dialekt und welchen sollten Sie lernen, um ein Gefühl für die verschiedenen verfügbaren SQL-Implementierungen zu bekommen.

Datenkontrollsprache (DCL)

Die Data Control Language, kurz DCL , ist für alle möglichen Verwaltungsaufgaben rund um die Datenbank selbst zuständig. Die bemerkenswerteste Aufgabe ist das Festlegen von Berechtigungen für Datenbankbenutzer, was hauptsächlich durch die Befehle GRANT, REVOKE und DENY geschieht.

GRANT ist der SQL-Befehl, der für die Vergabe von Berechtigungen an einen Datenbankbenutzer zuständig ist. Wenn wir das Recht zur Abfrage der Tabelle Accounts Tabelle an einen Benutzer namens Mark erteilen wollen, würden wir etwa so vorgehen:

GRANT SELECT TO ‘mark’@’localhost’

Um einem Datenbankbenutzer explizit das Recht zu verweigern, die Tabelle abzufragen, verwenden Sie den Befehl DENY wie folgt:

DENY SELECT FROM ‘mark’@’localhost’

Beachten Sie, dass die explizite Verweigerung einer Berechtigung verhindert, dass sie in Zukunft erteilt wird. Wenn Sie einen GRANT - oder DENY -Befehl einfach nur rückgängig machen wollen, sollten Sie den REVOKE-Befehl verwenden:

REVOKE SELECT FROM ‘mark’@’localhost’

Der obige Befehl macht alle GRANT und DENY Berechtigungen, die dem Benutzer zugewiesen wurden, rückgängig und setzt sie im Wesentlichen auf ihren Standardstatus zurück.

Beachten Sie, dass sich diese Befehle von SQL-Dialekt zu SQL-Dialekt stark unterscheiden, so dass die obigen Beispiele davon ausgehen, dass Sie Microsoft SQL Server verwenden. Es gibt noch viele weitere Befehle, die sich mit der Datenbankverwaltung befassen, aber diese unterscheiden sich so stark zwischen den verschiedenen Plattformen, dass es zu umfangreich wäre, sie hier zu behandeln. Konsultieren Sie die Dokumentation Ihrer Datenbank für weitere Details.

Erfahren Sie mehr über die SQL-Sprache

Zusammenfassend lässt sich die SQL-Sprache in vier Untersprachen unterteilen:

  1. Data Query Language (DQL) für die Abfrage von Daten.
  2. Data Manipulation Language (DML) für die Bearbeitung von Daten.
  3. Data Definition Language (DDL) für die Strukturierung von Daten.
  4. Data Control Language (DCL) für die Verwaltung der Datenbank.

Wenn Sie mehr über SQL lernen wollen, besuchen Sie unseren SQL für Anfänger Kurs, in dem wir all dies und mehr behandeln. Sie können auch einen Blick auf unser SQL für Anfänger Cheat Sheet werfen, um die Syntax eines beliebigen Befehls schnell aufzufrischen.