DDL (Data Definition Language) — è un linguaggio di definizione dei dati, progettato per definire la struttura del database (creazione, modifica, eliminazione di tabelle, schemi, indici, ecc.):
CREATE TABLE, ALTER TABLE, DROP TABLE.DML (Data Manipulation Language) — è un linguaggio di manipolazione dei dati, che lavora con il contenuto delle tabelle (inserimento, modifica, eliminazione, selezione di righe):
INSERT, UPDATE, DELETE, SELECT.Ad esempio, diversi utenti possono avere diritti diversi solo su DML o solo su DDL:
-- DDL: creazione di una tabella CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- DML: inserimento di dati INSERT INTO users (id, name) VALUES (1, 'Ivan');
"È possibile annullare un comando DDL (ad esempio, DROP TABLE), se è stato eseguito all'interno di una transazione esplicita?"
La maggior parte dei DBMS (ad esempio, PostgreSQL, Oracle) supporta le transazioni per DDL, ma molti non consentono di annullare i comandi DDL, anche se racchiusi esplicitamente in una transazione. In MySQL i comandi DDL vengono sempre registrati immediatamente.
BEGIN; DROP TABLE employees; ROLLBACK;
Nella maggior parte dei casi, la tabella verrà rimossa definitivamente, anche se si esegue il rollback.
Storia
Perdita della tabella nell'ambiente di sviluppo dopo l'esecuzione accidentale di DROP TABLE — il comando è irreversibile, nonostante l'annullamento della transazione.
Storia
L'organizzazione ha dato diritti amministrativi al progetto, che ha causato, a causa di un bug, una modifica massiccia della schema del DB tramite ALTER, portando a un lungo downtime del servizio e perdita di ordini.
Storia
Negando i diritti su DDL ai principianti, il team ha dimenticato che le procedure per il deployment delle migratorie richiedono accesso DDL — il rilascio è fallito dopo ore di indagini e urgente elevazione dei ruoli.