DDL (Data Definition Language) — es un lenguaje de definición de datos destinado a definir la estructura de la base de datos (crear, modificar, eliminar tablas, esquemas, índices, etc.):
CREATE TABLE, ALTER TABLE, DROP TABLE.DML (Data Manipulation Language) — es un lenguaje de manipulación de datos que opera sobre el contenido de las tablas (agregar, modificar, eliminar, seleccionar filas):
INSERT, UPDATE, DELETE, SELECT.Por ejemplo, diferentes usuarios pueden tener diferentes permisos solo para DML o solo para DDL:
-- DDL: crear tabla CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- DML: insertar datos INSERT INTO users (id, name) VALUES (1, 'Ivan');
"¿Se puede revertir un comando DDL (por ejemplo, DROP TABLE) si se ejecutó dentro de una transacción explícita?"
La mayoría de los SGBD (por ejemplo, PostgreSQL, Oracle) admiten transacciones para DDL, pero muchos no permiten revertir comandos DDL, incluso si están envueltos explícitamente en una transacción. En MySQL, los comandos DDL siempre se registran de inmediato.
BEGIN; DROP TABLE employees; ROLLBACK;
En la mayoría de los casos, la tabla será eliminada para siempre, incluso a pesar de la reversión.
Historia
Pérdida de una tabla en el entorno de desarrollo después de ejecutar accidentalmente DROP TABLE — el comando es irreversible, a pesar de la reversión de la transacción.
Historia
La organización otorgó permisos administrativos a un proyecto que, como resultado de un error, realizó un cambio masivo en el esquema de la base de datos a través de ALTER, lo que causó un tiempo de inactividad prolongado del servicio y pérdida de pedidos.
Historia
**Negándose a otorgar permisos DDL a los novatos, el equipo olvidó que los procedimientos para desplegar migraciones requieren acceso DDL — el lanzamiento fracasó después de varias horas de investigaciones y elevación de roles de emergencia.