ProgrammatieBackend ontwikkelaar

Leg het verschil uit tussen DDL- en DML-commando's in SQL, geef voorbeelden en leg uit hoe dit in de praktijk invloed heeft op toegangsrechten en transacties.

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord

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):

  • Voorbeelden van commando's: CREATE TABLE, ALTER TABLE, DROP TABLE.
  • DDL-commando's worden meestal automatisch geregistreerd in de database (autocommit), wat betekent dat het moeilijk is om wijzigingen terug te draaien.

DML (Data Manipulation Language) is een gegevensmanipulatietaal die werkt met de inhoud van tabellen (toevoegen, wijzigen, verwijderen, selecteren van rijen):

  • Voorbeelden van commando's: INSERT, UPDATE, DELETE, SELECT.
  • DML-commando's kunnen meestal worden omhuld door een transactie en kunnen mogelijk worden teruggedraaid tot de commit.

Bijvoorbeeld, verschillende gebruikers kunnen verschillende rechten hebben voor alleen DML of alleen DDL:

  • Gewone applicaties krijgen vaak geen DDL-rechten om te voorkomen dat de database-structuur per ongeluk wordt gewijzigd;
  • DML-rechten zijn toegestaan voor het werken met gegevens.

Voorbeeld:

-- DDL: tabel maken CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- DML: gegevens invoegen INSERT INTO users (id, name) VALUES (1, 'Ivan');

Vraag met een addertje onder het gras

"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.

Voorbeeld:
BEGIN; DROP TABLE employees; ROLLBACK;

In de meeste gevallen wordt de tabel voorgoed verwijderd, zelfs met rollbacks.

Voorbeelden van echte fouten door gebrek aan kennis van de nuance van het onderwerp


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.