DDL (Data Definition Language) is een gegevensdefinitietaal die is ontworpen om de structuur van een database te definiëren (maken, wijzigen, verwijderen van tabellen, schema's, indices, enzovoort):
CREATE TABLE, ALTER TABLE, DROP TABLE.DML (Data Manipulation Language) is een gegevensmanipulatietaal die werkt met de inhoud van tabellen (toevoegen, wijzigen, verwijderen, selecteren van rijen):
INSERT, UPDATE, DELETE, SELECT.Bijvoorbeeld, verschillende gebruikers kunnen verschillende rechten hebben voor alleen DML of alleen DDL:
-- DDL: tabel maken CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- DML: gegevens invoegen INSERT INTO users (id, name) VALUES (1, 'Ivan');
"Kan een DDL-commando (zoals DROP TABLE) worden teruggedraaid als het is uitgevoerd binnen een expliciete transactie?"
De meeste DBMS'en (bijvoorbeeld PostgreSQL, Oracle) ondersteunen transacties voor DDL, maar veel laten geen DDL-commando's terugdraaien, zelfs niet als ze expliciet in een transactie zijn gewikkeld. In MySQL worden DDL-commando's altijd onmiddellijk geregistreerd.
BEGIN; DROP TABLE employees; ROLLBACK;
In de meeste gevallen wordt de tabel voorgoed verwijderd, zelfs met rollbacks.
Verhaal
Verlies van een tabel in de ontwikkeling omgeving na onopzettelijke uitvoering van DROP TABLE - de actie is onomkeerbaar, ondanks de rollback van de transactie.
Verhaal
De organisatie gaf administratieve rechten aan een project dat door een bug massale wijzigingen in het database-schema produceerde via ALTER, wat leidde tot een langdurige stilstand van de service en verlies van bestellingen.
Verhaal
Door DDL-rechten te weigeren aan nieuwkomers, vergat het team dat de procedures voor het uitvoeren van migraties DDL-toegang vereisen - de release mislukte na enkele uren van onderzoek en snelle rolverhogingen.