back to top

SQL ALTER TABLE – Modifica strutturale di una tabella

Come abbiamo visto alla lezione dedicata al comando CREATE TABLE, la struttura di una tabelle viene definita in fase di creazione. Una volta creata la tabella, tuttavia, non è inmutabile ma è possibile apportarvi delle modifiche strutturali.

Per modifiche alla struttura di una tabella si intende, ad esempio, l’aggiunta di un campo, la modifica del nome di un campo esistente, del suo tipo di dato o del fatto che possa essere NULL (non richiesto) o NOT NULL (obbligatorio), ecc.

Il comando di SQL previsto per la modifica alla struttura di una tabella è ALTER TABLE. Di seguito vedremo come utilizzarlo per aggiungere, modificare o eliminare una colonna da una tabella del nostro database di prova.

Aggiungere una nuova colonna ad una tabella

La sintassi per aggiungere una colonna ad una tabella in SQL è la seguente:

ALTER TABLE nome_tabella ADD COLUMN nome_colonna tipo_dato

Per fare un esempio proviamo ad aggiungere un campo booleano alla tabella libri per verificare se in un dato momento ci sono scorte del libro richiesto o meno. Il nome del campo sarà disponibile di tipo BOOLEAN (Si/No):

ALTER TABLE libri ADD COLUMN disponibile BOOLEAN

Modificare una colonna esistente

Vediamo come modificare un campo da una tabella. La sintassi è la seguente:

ALTER TABLE nome_tabella ALTER COLUMN nome_colonna operazione

Non eseguite queste operazioni ma limitatevi, per ora, a prendere atto della sintassi, dato che gli esempi che seguono si basano sui campi attualmente esistenti delle due tabelle create alla lezione precedente.

Modifica di una colonna su Access o SQL Server utilizzeremo:

ALTER TABLE libri ALTER COLUMN titolo VARCHAR(50)

Su MySQL ed Oracle il comando è leggermente diverso (invece di ALTER COLUMN si usa MODIFY COLUMN):

ALTER TABLE libri MODIFY COLUMN titolo VARCHAR(50)

Ho impostato il tipo VARCHAR con lunghezza massima 50 caratteri al campo titolo.

Cancellare una colonna

La sintassi per la cancellazione di una colonna è la seguente:

ALTER TABLE nome_tabella DROP COLUMN nome_colonna

Vediamo un esempio:

ALTER TABLE libri DROP COLUMN id_autore

Questa modifica cancella il campo "id_autore" dalla tabella "libri" del nostro database di prova.

PubblicitÃ