ProgrammierungBackend Entwickler

Erklären Sie den Unterschied zwischen DDL- und DML-Befehlen in SQL, geben Sie Beispiele und erläutern Sie, wie sich dies praktisch auf Zugriffsrechte und Transaktionen auswirkt.

Bestehen Sie Vorstellungsgespräche mit dem Hintsage-KI-Assistenten

Antwort

DDL (Data Definition Language) ist eine Datendefinitionssprache, die zur Definition der Struktur einer Datenbank verwendet wird (Erstellen, Ändern, Löschen von Tabellen, Schemata, Indizes usw.):

  • Beispiele für Befehle: CREATE TABLE, ALTER TABLE, DROP TABLE.
  • DDL-Befehle werden in der Regel automatisch in der Datenbank fixiert (autocommit), das heißt, eine Änderung ist schwer rückgängig zu machen.

DML (Data Manipulation Language) ist eine Datamanipulationssprache, die mit dem Inhalt von Tabellen arbeitet (Hinzufügen, Ändern, Löschen, Abfragen von Zeilen):

  • Beispiele für Befehle: INSERT, UPDATE, DELETE, SELECT.
  • DML-Befehle können in der Regel in eine Transaktion gehüllt werden, und sie können bis zum Commit zurückgesetzt werden.

Zum Beispiel können verschiedene Benutzer unterschiedliche Rechte nur für DML oder nur für DDL haben:

  • Gewöhnlichen Anwendungen wird oft DDL untersagt, um zu verhindern, dass die Struktur der Datenbank versehentlich geändert wird;
  • DML wird für die Arbeit mit Daten erlaubt.

Beispiel:

-- DDL: Tabelle erstellen CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- DML: Daten einfügen INSERT INTO users (id, name) VALUES (1, 'Ivan');

Trickfrage

"Kann man einen DDL-Befehl (z.B. DROP TABLE) zurücksetzen, wenn er innerhalb einer expliziten Transaktion ausgeführt wurde?"

Die meisten DBMS (z.B. PostgreSQL, Oracle) unterstützen Transaktionen für DDL, aber viele erlauben es nicht, DDL-Befehle zurückzusetzen, selbst wenn sie explizit in eine Transaktion gehüllt sind. In MySQL werden DDL-Befehle immer sofort festgeschrieben.

Beispiel:
BEGIN; DROP TABLE employees; ROLLBACK;

In den meisten Fällen wird die Tabelle dauerhaft entfernt, selbst bei einem Rollback.

Beispiele für echte Fehler wegen Unkenntnis der Feinheiten des Themas


Geschichte

Der Verlust einer Tabelle in der Entwicklungsumgebung nach der versehentlichen Ausführung von DROP TABLE — der Befehl ist unwiderruflich, trotz Rollback der Transaktion.


Geschichte

Die Organisation gab administrativen Zugriff auf ein Projekt, das aufgrund eines Fehlers Massenänderungen der Datenbankschemata über ALTER vornahm, was zu langen Ausfallzeiten des Dienstes und Verlust von Bestellungen führte.


Geschichte

Indem den Neulingen die DDL-Rechte verweigert wurden, vergaß das Team, dass die Verfahren zum Bereitstellen von Migrationen DDL-Zugriff benötigen — das Release verzögerte sich nach stundenlangen Ermittlungen und der dringenden Erhöhung der Rollen.