Vai al contenuto principale

Comandi DDL in SQL: la guida definitiva

Scopri i comandi DDL in SQL e come aiutano a definire e gestire la struttura degli oggetti del database.
· 11 min leggi

Scopri con l'IA

SQL è essenziale per data scientist e data engineer per estrarre insight dai database. Un database è composto da più tabelle e ci sono diverse varianti di SQL, da PostgreSQL a Snowflake.

I comandi DDL (Data Definition Language) in SQL servono a definire e gestire la struttura degli oggetti del database. In questo articolo ti spiegherò i comandi DDL in SQL con esempi utilizzando un database di film. Iniziamo!

Cosa sono i comandi DDL in SQL?

I comandi DDL (Data Definition Language) mi permettono di definire e gestire uno schema in SQL. In poche parole, uno schema in SQL è un progetto che definisce come i dati sono organizzati in un database e come vengono gestite le relazioni tra le diverse tabelle all'interno del database.

I comandi DDL comprendono vari comandi con funzionalità diverse, che tratterò nel seguente ordine:

Comando DDL

DESCRIZIONE

SINTASSI

CREATE

Crea una tabella e le sue colonne insieme al relativo tipo di dato.

CREATE TABLE

ALTER

Modifica i nomi delle colonne e aggiunge o elimina una colonna.

ALTER TABLE

RENAME

Cambia il nome della tabella.

RENAME TABLE

COMMENT

Aggiunge una spiegazione al codice SQL per la revisione da parte di altri membri del team.

--

/* …

…*/

TRUNCATE

Rimuove i dati da una tabella senza eliminarla.

TRUNCATE TABLE

DROP

Elimina la tabella con i suoi dati.

DROP TABLE

Comandi DDL in SQL con esempi

Ora che abbiamo compreso le basi dei comandi DDL e dei loro scopi, vediamo alcuni esempi pratici usando il database Movies.

Comando CREATE in SQL

Quando devo creare una nuova tabella, uso il comando CREATE TABLE come mostrato sotto:

CREATE TABLE table_name (
    column_1 datatype,
    column_2 datatype,
    ...,
    column_n datatype
);

Nell'esempio sopra, definisco le colonne con diversi tipi di dato. SQL supporta vari tipi di dato, anche se i più comuni sono di solito STRING (testo), INT (numeri interi), FLOAT (numeri decimali) e DATE (data).

Per esempio, se volessi creare la tabella actor, uso CREATE TABLE in questo modo:

CREATE TABLE actor (
    actor_id String(32767),
    first_name String(32767),
    last_name String(32767),
    last_update String(32767)
);

Dove:

  • actor è il nome della tabella
  • actor_id è un nome di colonna il cui contenuto deve essere in formato testo (String) e non superare i 32767 caratteri.
  • first_name è un nome di colonna il cui contenuto deve essere in formato testo (String) e non superare i 32767 caratteri.
  • last_name è un nome di colonna il cui contenuto deve essere in formato testo (String) e non superare i 32767 caratteri.
  • last_update è un nome di colonna il cui contenuto deve essere in formato testo (String) e non superare i 32767 caratteri.

Una volta eseguita la query, la nuova tabella sarà visibile insieme alle altre, così potrò interrogarla in qualsiasi momento.

Comando ALTER in SQL

Usando ALTER in SQL, posso aggiornare una tabella senza doverne creare un'altra ed eliminare la vecchia. Le organizzazioni possono avere migliaia di tabelle, e sapere come mantenere i dati aggiornati senza rischiare perdite è fondamentale.

È importante notare che esistono diversi modi di usare ALTER, tra cui:

  • Aggiungere nuove colonne a una tabella
  • Rinominare colonne in una tabella
  • Modificare colonne in una tabella
  • Eliminare colonne in una tabella

Comando ADD in ALTER

Per aggiungere una nuova colonna usando ALTER, combiniamo il comando ALTER con il comando ADD, come vedi sotto:

ALTER TABLE table_name ADD column_name datatype;

Qui aggiungiamo una nuova colonna nationality con tipo di dato STRING alla tabella actor.

ALTER TABLE actor ADD nationality String(32767);

Tutti i comandi ALTER in SQL seguono una struttura simile, rendendo SQL un linguaggio naturale da imparare e padroneggiare.

Comando RENAME in ALTER

Ogni volta che devo cambiare il nome di una colonna, uso il comando RENAME in ALTER come segue:

ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;

Per esempio, cambiamo il nome della colonna last_name in family_name per evitare dubbi sul fatto che si riferisca a un secondo nome o al cognome. In tal caso, eseguirò la seguente query:

ALTER TABLE actor RENAME COLUMN last_name TO family_name;

Comando MODIFY in ALTER

I tipi di dato definiscono le proprietà delle colonne e influiscono sulla qualità dei dati. Per esempio, last_update era impostato su String(text), ma i dati mostrano chiaramente che rappresenta data e ora.

Osservando i diversi tipi di dato e tornando ai dati nella colonna, il tipo di dato appropriato è TIMESTAMP.

Aggiornare correttamente il tipo di dato di una colonna facilita l'aggregazione e il filtraggio dei dati per data usando altri comandi SQL. Ecco come usiamo MODIFY in SQL:

ALTER TABLE table_name ALTER COLUMN column_name datatype;

Applicando quanto sopra a last_update, uso la seguente query:

ALTER TABLE actor ALTER COLUMN last_update TIMESTAMP;

Comando DROP in ALTER

L'ultima opzione offerta da ALTER è eliminare una colonna. Ci sono molte ragioni per cui potrei aver bisogno di DROP di una colonna, tra cui ma non solo:

  • Informazioni non più rilevanti,
  • Informazioni duplicate, dove la stessa colonna si trova in un'altra tabella,
  • Problemi di qualità dei dati,
  • Ottimizzazione dello spazio di archiviazione.

Eliminare una colonna in SQL è facile, ma usalo con cautela perché non sempre è possibile annullare l'azione di eliminazione della colonna.

ALTER TABLE table_name DROP COLUMN column_name;

Il comando per eliminare una colonna è simile a quello per rinominarla, ma i due non sono affatto la stessa cosa. Rinominare la colonna mantiene i dati al suo interno ma cambia l'intestazione. Il comando DROP, invece, rimuove sia i dati sia l'intestazione, come se la colonna non fosse mai esistita.

Dopo essermi reso conto che la colonna last_update fornisce poche informazioni oltre a indicare se il database è stato aggiornato, ho deciso di eliminarla con la seguente query:

ALTER TABLE actor DROP COLUMN last_update; 

Comando RENAME in SQL

Il comando RENAME si applica solo al cambio del nome della tabella e non va confuso con le funzionalità di RENAME di ALTER. Infatti, per cambiare il nome di una tabella, la query è semplicemente:

RENAME TABLE old_table_name TO new_table_name;

La tabella actor contiene solo nomi e non include altre informazioni sugli attori. Ha quindi senso chiarirlo cambiando il nome della tabella in:

RENAME TABLE actor TO actor_names;

COMMENT in SQL

Commentare in SQL è fondamentale per chiarezza e contesto, rendendo le tue query più facili da capire e mantenere. Aiuta a spiegare logiche complesse, documentare le modifiche e motivare certe scelte. In SQL puoi aggiungere commenti in due modi:

  • Commenti su singola riga
  • Commenti su più righe

Vediamoli in azione.

Commento su singola riga in SQL

Il commento su singola riga di solito si mette accanto al codice, come sotto. Così posso leggere il commento di un collega mentre leggo il codice.

Nella tabella actor, actor_id e last_update non sono intuitivi e richiedono un chiarimento con un commento.

CREATE TABLE actor (
 actor_id String(32767), --unique identifier
 first_name String(32767),
 last_name String(32767),
 last_update String(32767)--datetime of last update
);

Commentare in SQL è un comando diverso dagli altri in questo articolo perché non richiama una funzione COMMENT. I due trattini senza spazio in mezzo "--" indicano l'inizio di un commento. Qualsiasi cosa scritta dopo non sarà considerata parte del codice.

Commento su più righe in SQL

Quando la spiegazione è più lunga, usa i commenti su più righe. È preferibile per spiegare una funzione o fornire un contesto dettagliato. Per aggiungere un commento su più righe in SQL, inizia con /* e termina con */. Il motore SQL ignora tutto ciò che è scritto tra /* e */ e non lo esegue come parte della query.

/* Create a table `actor` with the actors’ names. Store first and last name, and keep track of any updates*/
CREATE TABLE actor (
 actor_id String(32767), --unique internal identifier
 first_name String(32767),
 last_name String(32767),
 last_update String(32767)--datetime of last update
);

Comando TRUNCATE in SQL

Troncare una tabella non è la stessa cosa che eliminarla. Truncare rimuove tutti i dati ma mantiene intatta la struttura della tabella, mentre eliminare rimuove l'intera tabella, inclusa la struttura. Bisogna fare attenzione a scegliere il comando appropriato per lo scopo giusto.

L'equivalente di TRUNCATE in Excel si ottiene selezionando tutti i dati sotto il nome della colonna e premendo Canc. In SQL, scrivo:

TRUNCATE TABLE table_name;

Se la tabella actor va troncata, eseguo:

TRUNCATE TABLE actor;

Il risultato sarà una tabella con soli nomi di colonna e nessun valore.

Comando DROP in SQL

Al contrario di TRUNCATE, il comando DDL DROP elimina completamente la tabella e tutti i suoi valori. Bisogna fare attenzione quando si eseguono tali comandi, poiché questa azione non è sempre reversibile. Il comando DROP ha una struttura simile alla query TRUNCATE:

DROP TABLE table_name;

Quindi eliminare la tabella actor è semplice come

DROP TABLE actor;

Sebbene le diverse varianti di SQL possano richiedere piccole modifiche nella sintassi, i comandi DDL sopra sono in gran parte gli stessi indipendentemente dalla versione di SQL che stai usando.

DDL vs altri tipi di comandi

Nella sezione precedente ho spiegato come i comandi DDL definiscono la struttura delle tabelle e ne aggiornano i contenuti o le proprietà secondo necessità. Altri tipi di comandi SQL permettono di selezionare, aggregare, aggiornare e persino unire tabelle per ottenere una diversa vista dei dati, e ciascun insieme di comandi ha uno scopo specifico.

Comando

Definizione

Scopo

DQL

Data Query Language

Ottenere dati dal database in base a un criterio

DML

Data Manipulation Language

Manipolare le tabelle nel database con più funzionalità rispetto ad ALTER.

DCL

Data Control Language

Controlli di autorizzazione su accesso e privilegi.

TCL

Transaction Control Language

Aggiorna il database con le modifiche apportate usando i comandi DML

Sviluppa le tue competenze SQL con DataCamp

Una buona qualità dei dati si ottiene quando i dati sono ben definiti e strutturati. I comandi DDL in SQL aiutano i professionisti dei dati a creare e mantenere un database strutturato. Altri comandi SQL, come i comandi DML, ti permettono di visualizzare, aggregare, inserire, filtrare e unire dati. Scopri di più su SQL e sviluppa le tue abilità esplorando le seguenti risorse:

Deandra Cutajar

Autore

Deandra Cutajar

Professionista dei dati e dell’AI con ampia esperienza nella creazione di modelli di data science su misura, utilizzando tecniche statistiche e modelli avanzati come serie temporali, LLM, reti neurali e teoria dei grafi.

Argomenti

Correlato