DDL (Data Definition Language) — c'est un langage de définition des données, destiné à définir la structure de la base de données (création, modification, suppression de tables, schémas, index, etc.) :
CREATE TABLE, ALTER TABLE, DROP TABLE.DML (Data Manipulation Language) — c'est un langage de manipulation des données, qui travaille avec le contenu des tables (ajout, modification, suppression, sélection de lignes) :
INSERT, UPDATE, DELETE, SELECT.Par exemple, différents utilisateurs peuvent avoir différents droits seulement sur DML ou seulement sur DDL :
-- DDL : création de table CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- DML : insertion de données INSERT INTO users (id, name) VALUES (1, 'Ivan');
"Peut-on annuler une commande DDL (par exemple, DROP TABLE) si elle a été exécutée dans une transaction explicite ?"
La plupart des SGBD (par exemple, PostgreSQL, Oracle) prennent en charge les transactions pour DDL, mais beaucoup ne permettent pas d'annuler les commandes DDL, même si elles sont explicitement enveloppées dans une transaction. Dans MySQL, les commandes DDL sont toujours enregistrées immédiatement.
BEGIN; DROP TABLE employees; ROLLBACK;
Dans la plupart des cas, la table sera définitivement supprimée, même après un rollback.
Histoire
Perte d'une table en environnement de développement après une exécution accidentelle de DROP TABLE — la commande est irréversible, malgré le rollback de transaction.
Histoire
L'organisation a accordé des droits administratifs à un projet qui, en raison d'un bug, a produit des modifications massives de la structure de la base de données via ALTER, ce qui a entraîné un long temps d'arrêt du service et une perte de commandes.
Histoire
En refusant les droits DDL aux débutants, l'équipe a oublié que les procédures de déploiement de migrations nécessitent l'accès DDL — la sortie a échoué après plusieurs heures d'enquêtes et d'élévation urgente des rôles.