Loading AI tools
tipo di linguaggio che consente di interagire con i dati in un database Da Wikipedia, l'enciclopedia libera
In informatica, un linguaggio di manipolazione dei dati (o DML, dall'inglese data manipulation language) è un tipo di linguaggio che consente di leggere, inserire, modificare o eliminare i dati in un database. Attualmente il linguaggio di manipolazione dati più utilizzato è l'SQL (Structured Query Language), che trova il suo maggiore campo di applicazione nel trattamento dei database relazionali. Altri linguaggi di tipo DML sono usati da DBMS non relazionali, come l'IMS/DL1 e l'IDMS.
I comandi DML all'inizio erano utilizzati solo all'interno di programmi scritti in altri linguaggi di programmazione, ma in seguito all'affermazione di SQL sono oggi usati anche dagli utenti finali. Essi esprimono azioni da effettuare sui dati identificate dalla parola iniziale dell'istruzione, che quasi sempre è un verbo. Nel caso di SQL, i verbi utilizzati sono SELECT per la ricerca, INSERT per l'inserimento, UPDATE per l'aggiornamento e DELETE per la cancellazione.
Le istruzioni DML dell'SQL sono state standardizzate dall'ANSI, ma molti produttori di DBMS forniscono estensioni proprietarie che garantiscono funzionalità aggiuntive.
Il comando ha la funzione di inserire i dati nelle tabelle.
Le colonne (o campi) di destinazione dei valori possono essere o meno dichiarate nel comando. Se non vengono dichiarate, è necessario passare al comando un valore per ogni colonna della tabella, rispettando rigorosamente l'ordine delle colonne stesse. Se, invece, le colonne di destinazione vengono dichiarate, è possibile indicare le sole colonne per le quali vengono passati dei valori, purché vengano inseriti comunque i valori per tutte le colonne not null (che non possono essere nulle) della tabella.
Di per sé il comando insert opera inserendo in tabella una sola riga per volta. È possibile, però, inserire più di una riga "in modo automatico" passando all'insert una serie di righe (o tuple) risultanti da un comando di select, purché tali righe siano compatibili con le colonne della tabella su cui si inseriscono i dati.
INSERT INTO nome_tabella
VALUES (elenco valori, tutti, rispettando l'ordine dei campi della tabella);
oppure
INSERT INTO nome_tabella (elenco dei campi interessati dall'inserimento)
VALUES (elenco valori, tutti, rispettando l'ordine dei campi dichiarati sopra);
INSERT INTO nome_tabella (elenco dei campi interessati dall'inserimento) AS
SELECT ...;
Il comando update ha la tripla funzione di modificare i dati delle tabelle.
Il nome di ogni campo che deve essere modificato va dichiarato dopo la parola chiave SET e deve essere seguito dal simbolo " = " (uguale) e dal nuovo valore che deve assumere.
È possibile modificare più campi della stessa riga in un unico comando update, separandoli l'uno dall'altro con il simbolo ", " (virgola).
Il comando generico aggiorna tutte le righe della tabella. È possibile restringerne il numero applicando la parola chiave aggiuntiva WHERE, che permette di effettuare una selezione qualitativa delle righe imponendo delle condizioni sui dati presenti nelle righe prima dell'aggiornamento.
UPDATE nome_tabella
SET nome_campo1 = 'valore1_nuovo',
nome_campo2 = 'valore2_nuovo',
...
;
UPDATE nome_tabella
SET nome_campo1 = 'valore1_nuovo',
nome_campo2 = 'valore2_nuovo'
WHERE nome_campo3 = 'valore';
Il comando delete ha la funzione di cancellare i dati dalle tabelle.
Come il comando update anche delete può operare in modo generico cancellando tutte le righe della tabella oppure può identificare le righe da cancellare mediante la parola chiave aggiuntiva WHERE e la condizione (o le condizioni) ad essa associata.
DELETE FROM nome_tabella;
DELETE FROM nome_tabella
WHERE nome_campo = 'valore';
Come già detto, una Delete priva di clausola Where cancella tutte le righe dalla tabella specificata. Tuttavia, esiste un altro modo per svuotare completamente una tabella: il comando Truncate Table. Alcuni DBMS implementano questo comando (che non è presente nello standard SQL) in modo più veloce rispetto a una Delete, ad esempio cancellando il file dei dati senza leggerlo e ricreandolo vuoto. Generalmente però questo impedisce che vengano restituite alcune informazioni accessorie, come il numero di righe cancellate.
TRUNCATE [TABLE] nome_tabella
Le istruzioni di DML Insert, Update, Replace e Delete, se poste all'interno di una transazione, non sono irreversibili e possono essere annullate nel caso ci si renda conto che non sono state applicate in modo corretto.
Una transazione è un blocco di istruzioni che sono strettamente correlate tra loro. Nel caso si verifichi un errore (sia esso nel programma oppure dovuto ad un problema esterno, per esempio se il sistema si blocca) non verrà annullata solo l'ultima istruzione, ma l'intera transazione. In tal modo si è certi che l'integrità dei dati verrà garantita.
Per iniziare esplicitamente una transazione si utilizza il comando BEGIN TRANSACTION. La mancanza di questo comando nei vari DBMS fa sì che ogni istruzione funga da transazione a sé stante.
BEGIN TRANSACTION [transaction_name];
Per confermare la transazione si utilizza il comando COMMIT. Con esso tutte le modifiche effettuate sui dati in precedenza vengono memorizzate.
COMMIT [TRANSACTION] [transaction_name];
Per annullare la transazione si utilizza il comando ROLLBACK. Con esso tutte le modifiche effettuate sui dati in precedenza (a partire dall'inizio della transazione) vengono cancellate.
ROLLBACK [TRANSACTION] [transaction_name];
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.