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:
ID | NAME | AGE | STATE | |
---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com |
2 | Molly | 22 | New Jersey | molly@example.com |
3 | Robert | 19 | New York | robert@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:
ID | NAME | AGE | STATE | ID_NUMBER | |
---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL |
2 | Molly | 22 | New Jersey | molly@example.com | NULL |
3 | Robert | 19 | New York | robert@example.com | NULL |
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ì:
ID | NAME | AGE | STATE | ID_NUMBER | COUNTRY | |
---|---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL | United States |
2 | Molly | 22 | New Jersey | molly@example.com | NULL | United States |
3 | Robert | 19 | New York | robert@example.com | NULL | United 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:
ID | NAME | AGE | STATE | ID_NUMBER | COUNTRY | |
---|---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL | United States |
2 | Molly | 22 | New Jersey | molly@example.com | NULL | United States |
3 | Robert | 19 | New York | robert@example.com | NULL | United 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_ID | NAME | AGE | STATE | ID_NUMBER | COUNTRY | |
---|---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL | United States |
2 | Molly | 22 | New Jersey | molly@example.com | NULL | United States |
3 | Robert | 19 | New York | robert@example.com | NULL | United 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!