Articolo originale: Alter Table in SQL – How to Add a Column or Rename a Column in SQL

Hai creato il tuo database e le tue tabelle e dopo tutto questo lavoro ti accorgi che hai bisogno  di aggiungere o rinominare una colonna. Bene, per farlo puoi usare l'istruzione ALTER TABLE.

Ma tieni a mente che nel farlo devi essere molto prudente. Se la tua tabella ha molte righe, può causare problemi di prestazioni al database.

Nota: se la sintassi presentata qui non funziona, controlla nella documentazione relativa all'implementazione di SQL che stai usando. Le cose funzionano per lo più allo stesso modo, ma ci sono delle differenze.  

Come aggiungere una nuova colonna con ALTER TABLE

Per aggiungere una nuova colonna, devi prima selezionare la tabella, con ALTER TABLE nome_tabella, poi scrivere il nome della nuova colonna e il tipo di dato che deve aspettarsi, con ADD nome_colonna tipo_dato. Il codice, messo insieme, è così:

ALTER TABLE nome_tabella
ADD nome_colonna tipo_dato;

Esempio: ALTER TABLE per aggiungere una colonna

Abbiamo un database di utenti come segue:

IDNAMEAGESTATEEMAIL
1Paul24Michiganpaul@example.com
2Molly22New Jerseymolly@example.com
3Robert19New Yorkrobert@example.com

Abbiamo raggiunto un punto in cui occorre conservare il numero del documento d'identità dei nostri utenti, quindi abbiamo bisogno di aggiungere una nuova colonna.

Per aggiungere una nuova colonna alla nostra tabella users, dobbiamo selezionare la tabella con ALTER TABLE users e specificare il nome della nuova colonna e il suo tipo di dato con ADD id_number TEXT. Tutto insieme risulta così:

ALTER TABLE users
ADD id_number TEXT;

La tabella con la nuova colonna sarà come quella qui sotto:

IDNAMEAGESTATEEMAILID_NUMBER
1Paul24Michiganpaul@example.comNULL
2Molly22New Jerseymolly@example.comNULL
3Robert19New Yorkrobert@example.comNULL

Dovrai usare un'istruzione UPDATE per aggiungere l'informazione mancante relativa all'utente esistente, una volta che verrà fornita.

Come creare una nuova colonna con un valore predefinito invece di NULL

Puoi anche creare una colonna con un valore predefinito usando la parola chiave default seguita dal valore che vuoi assegnare. Gli utenti vedranno allora il valore di default invece di un valore mancante compilato con NULL.

Diciamo che avremo presto utenti internazionali e che vogliamo aggiungere una colonna country. Tutti i nostri utenti già inseriti vengono dagli Stati Uniti, allora potremmo usare questo valore come valore predefinito.

ALTER TABLE users
ADD country TEXT default "United States";

La tabella poi risulterà così:

IDNAMEAGESTATEEMAILID_NUMBERCOUNTRY
1Paul24Michiganpaul@example.comNULLUnited States
2Molly22New Jerseymolly@example.comNULLUnited States
3Robert19New Yorkrobert@example.comNULLUnited States

Sii prudente quando aggiungi nuove colonne alle tabelle

Se la tua tabella ha già molte righe - come quando hai molti utenti o molti dati in memoria - aggiungere una nuova colonna può essere dispendioso in termini di risorse. Quindi assicurati di svolgere questa operazione con attenzione.

Come rinominare una colonna con ALTER TABLE

Puoi rinominare una colonna con il codice qui sotto. Seleziona la tabella con ALTER TABLE nome_tabella e poi scrivi la colonna da rinominare e con quale nome: RENAME COLUMN vecchio_nome TO nuovo_nome.

ALTER TABLE nome_tabella
RENAME COLUMN vecchio_nome TO nuovo_nome;

Esempio di come rinominare una colonna

Consideriamo la stessa tabella che abbiamo usato nell'esempio precedente:

IDNAMEAGESTATEEMAILID_NUMBERCOUNTRY
1Paul24Michiganpaul@example.comNULLUnited States
2Molly22New Jerseymolly@example.comNULLUnited States
3Robert19New Yorkrobert@example.comNULLUnited States

Per evitare confusione tra le colonne id e id_number, rinominiamo la prima in user_id.

Prima selezioniamo la tabella con ALTER TABLE users e poi dichiariamo il nome della colonna in modo che venga modificato come vogliamo con RENAME COLUMN id TO user_id.

ALTER TABLE users
RENAME COLUMN id TO user_id;

Dopo questa query, la tabella apparirà così:

USER_IDNAMEAGESTATEEMAILID_NUMBERCOUNTRY
1Paul24Michiganpaul@example.comNULLUnited States
2Molly22New Jerseymolly@example.comNULLUnited States
3Robert19New Yorkrobert@example.comNULLUnited States

Sii prudente quando rinomini una colonna in una tabella

Quando rinomini delle colonne usando ALTER TABLE, rischi di rompere delle dipendenze all'interno del database.

Se invece di usare ALTER TABLE, per modificare il nome della colonna, utilizzi uno strumento di refactoring, questo aggiornerà il nome e saprà anche gestire tutte le dipendenze.

Se hai un piccolo database non hai bisogno di preoccuparti, ma è importante tenerlo a mente.

Conclusione

In questo articolo hai imparato a usare ALTER TABLE per aggiungere una colonna e rinominare una colonna in una tabella.

Ricorda solo che entrambe le operazioni comportano dei rischi che è importante conoscere. Come ha detto qualcuno, da un grande potere deriva una grande responsabilità – e ALTER TABLE è un grande potere, perciò usalo con cautela!