Torna all'elenco degli articoli Articoli
Tempo di lettura: 7 minuti

Cosa sono DDL, DML, DQL e DCL in SQL?

Analizziamo la suddivisione di SQL nei suoi quattro principali sottolinguaggi e spieghiamo il significato di ciascuno di essi.

Quando si impara SQL, magari attraverso il corso completo di LearnSQL.it, ci si può imbattere in SQL per principianti corso, potreste esservi imbattuti nei termini DDL, DML, DQL e DCL. E forse vi sarete confusi con tutti questi acronimi. In questo articolo vi spiegheremo cosa significano questi termini e come corrispondono ai sottolinguaggi che dividono ordinatamente il linguaggio SQL in quattro parti che funzionano insieme.

Dividere SQL in sottolinguaggi

Structured Query Language, o SQL, è un linguaggio completo per la manipolazione dei database. È il linguaggio utilizzato in sistemi di database come PostgreSQL, MySQL, Microsoft SQL Server e Oracle Database. Ognuno di questi sistemi ha le proprie implementazioni delle dozzine di comandi del linguaggio SQL (cioè i propri dialetti), che all'inizio possono risultare sconcertanti.

L'SQL può fare molte cose diverse: creare tabelle di database, inserire o modificare record, aggiungere indici, recuperare informazioni e così via. Per questo motivo può essere utile dividere l'SQL in diversi linguaggi secondari; questo ci aiuta a comprendere tutte le diverse operazioni che possono essere eseguite su un database SQL. Questi sottolinguaggi sono:

  • Data Query Language (DQL) - Il Data Query Language è il sottolinguaggio responsabile della lettura, o interrogazione, dei dati di un database. In SQL, questo corrisponde al SELECT
  • Data Manipulation Language (DML) - Il Data Manipulation Language è il sottolinguaggio responsabile dell'aggiunta, della modifica o della cancellazione di dati da un database. In SQL, corrisponde ai linguaggi INSERT, UPDATE, e DELETE
  • Data Definition Language (DDL) - Il Data Definition Language è il sottolinguaggio responsabile della definizione della struttura dei dati in un database. In SQL, questo corrisponde alla manipolazione delle tabelle attraverso i linguaggi CREATE TABLE, ALTER TABLE, e DROP TABLE
  • Data Control Language (DCL) - Il Data Control Language è il sottolinguaggio responsabile delle attività amministrative di controllo del database stesso, in particolare la concessione e la revoca dei permessi agli utenti. In SQL, questo corrisponde ai comandi GRANT, REVOKE, e DENY, tra gli altri.

Nelle sezioni che seguono esamineremo uno per uno questi sottolinguaggi, esplorando il loro significato e i comandi che rappresentano. Se volete approfondire questi concetti, seguite il nostro corso interattivo SQL per principianti su LearnSQL.it. Contiene 129 esercizi pratici che vi aiuteranno a imparare SQL attraverso la pratica. Ogni esercizio risolto vi consentirà di acquisire maggiore sicurezza nelle vostre competenze in SQL.

Linguaggio di interrogazione dei dati (DQL)

Il Data Query Language, o DQL, è il gruppo di comandi responsabili dell'interrogazione dei dati di un database. Il principale comando DQL in SQL è il comando SELECT, che recupera i dati da una o più tabelle.

Prendiamo la seguente tabella. Contiene i dati di un conto bancario e si chiama Accounts:

IDNameBalance
1John Doe2000
2Sally Swanson1800
3Richard Poor5

Se volessimo recuperare i nomi di tutti gli utenti con un conto bancario, useremmo il comando SELECT:

SELECT Name 
FROM Accounts

Il comando sopra riportato è una tipica istruzione del sottolinguaggio DQL. E se invece volessimo ottenere i nomi di tutti gli utenti con un saldo superiore a 1500 dollari? In questo caso, dobbiamo aggiungere la clausola WHERE all'istruzione:

SELECT Name 
FROM Accounts 
WHERE Balance > 1500

Per maggiori dettagli sul comando SELECT (e molto altro), consultate la nostra scheda informativa SQL per principianti.

Linguaggio di manipolazione dei dati (DML)

Il linguaggio di manipolazione dei dati, o DML , è il gruppo di comandi responsabili della manipolazione dei dati in un database; in genere si tratta di inserire, modificare o cancellare righe nelle tabelle SQL.

Il comando SQL per inserire una nuova riga in una tabella è il comando INSERT. Se vogliamo aggiungere una riga alla tabella Accounts per un utente chiamato Evan Johnson con un saldo di 3200 dollari, dovremmo fare qualcosa di simile:

INSERT INTO Accounts (Name, Balance) 
VALUES (‘Evan Johnson’, 3200)

Se in futuro Evan effettuasse un prelievo di 200 dollari, dovremmo aggiornare il suo saldo a 3000 dollari. Per modificare il record del conto bancario di Evan, è necessario utilizzare il comando UPDATE:

UPDATE Accounts SET Balance = 3000 
WHERE Name = ‘Evan Johnson’

Infine, se Evan decidesse di chiudere il suo conto presso la nostra banca, dovremmo cancellare la sua voce nella tabella. Accounts tabella. Per fare ciò, è necessario utilizzare il comando DELETE:

DELETE FROM Accounts 
WHERE Name = ‘Evan Johnson’

I comandi sopra descritti (INSERT, UPDATE e DELETE) rappresentano le principali operazioni SQL per la manipolazione dei dati e costituiscono quindi il Data Manipulation Language. Per saperne di più su questi comandi, è possibile leggere l'articolo SQL INSERT, SQL UPDATE, SQL DELETE - Oh My! oppure seguire il corso Modificare i dati in SQL - istruzioni INSERT, UPDATE e DELETE corso qui su LearnSQL.it.

Linguaggio di definizione dei dati (DDL)

Il linguaggio di definizione dei dati, o DDL, è costituito dai comandi responsabili della creazione, della modifica e dell'eliminazione delle tabelle SQL. Questi comandi sono CREATE TABLE, ALTER TABLE e DROP TABLE.

Negli esempi precedenti, abbiamo lavorato con la tabella Accounts che aveva già una struttura e dei record. Ma come si fa a creare questa tabella? Dobbiamo usare il comando CREATE TABLE:

CREATE TABLE Accounts (
	ID INT,
	Name VARCHAR(255),
	Balance INT
)

E se volessimo modificare la tabella in modo che contenga una colonna che memorizzi i numeri di telefono dei titolari di conto corrente? Utilizzeremmo il comando ALTER TABLE:

ALTER TABLE Accounts
ADD Phone VARCHAR(255)

Infine, se si vuole eliminare del tutto la tabella Accounts Infine, se vogliamo eliminare del tutto la tabella, dobbiamo usare il comando DROP TABLE:

DROP TABLE Accounts

Questi comandi hanno molte più funzioni di quelle elencate sopra e la loro sintassi specifica tende a variare tra i vari dialetti di SQL. Se volete saperne di più, seguite la nostra traccia Creazione di strutture di database o leggete Che cos'è un dialetto SQL e quale dovreste imparare? per farvi un'idea delle diverse implementazioni SQL disponibili.

Linguaggio di controllo dei dati (DCL)

Il Data Control Language, o DCL , è responsabile di tutti i tipi di attività amministrative relative al database stesso. La più importante è l'impostazione dei permessi per gli utenti del database, che avviene principalmente attraverso i comandi GRANT, REVOKE e DENY.

GRANT è il comando SQL responsabile della concessione dei permessi a un utente del database. Se si volesse concedere il permesso di interrogare la tabella Accounts tabella a un utente di nome Mark, faremmo una cosa del genere:

GRANT SELECT TO ‘mark’@’localhost’

Per negare esplicitamente il permesso di interrogare la tabella a un utente del database, usare il comando DENY come segue:

DENY SELECT FROM ‘mark’@’localhost’

Si noti che negare esplicitamente un permesso impedisce che venga concesso in futuro. Se si vuole semplicemente annullare un comando GRANT o DENY, si deve usare il comando REVOKE:

REVOKE SELECT FROM ‘mark’@’localhost’

Il comando di cui sopra annulla tutti i permessi GRANT e DENY assegnati all'utente, riportandoli essenzialmente al loro stato predefinito.

Si noti che questi comandi differiscono notevolmente tra i vari dialetti di SQL, quindi gli esempi sopra riportati presuppongono l'utilizzo di Microsoft SQL Server. Esistono molti altri comandi che riguardano l'amministrazione del database, ma le differenze tra le varie piattaforme sono tali che sarebbe eccessivo trattarle in questa sede. Per maggiori dettagli, consultate la documentazione del vostro database.

Per saperne di più sul linguaggio SQL

In sintesi, il linguaggio SQL può essere suddiviso in quattro sottolinguaggi:

  1. Data Query Language (DQL) per l'interrogazione dei dati.
  2. Data Manipulation Language (DML) per la modifica dei dati.
  3. Data Definition Language (DDL) per la strutturazione dei dati.
  4. Data Control Language (DCL) per amministrare il database.

Se volete saperne di più su SQL, iscrivetevi al nostro corso SQL per principianti in cui trattiamo tutto questo e molto altro. Potete anche consultare il nostro SQL per principianti Cheat Sheet per un rapido ripasso della sintassi di qualsiasi comando.