Vai al contenuto principale

Introduzione all'istruzione ALTER TABLE in SQL

In questo tutorial imparerai a usare e applicare l'istruzione ALTER TABLE in SQL.
Aggiornato 29 set 2026  · 7 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

In SQL, esistono principalmente tre tipi di comandi:

  • DDL - acronimo di Data Definition Language, comprende i comandi SQL utilizzati per definire il database, inclusa la creazione di tabelle, la definizione delle specifiche, la modifica delle tabelle e così via. Esempi di DDL includono CREATE, DROP, ALTER, ecc. Le modifiche apportate tramite comandi DDL non possono essere annullate.

  • DML - acronimo di Data Manipulation Language, ti permette di eseguire query di select, insert, update e delete. Le modifiche apportate tramite comandi DML possono essere annullate. Esempi: SELECT, INSERT, UPDATE e DELETE.

  • DCL - acronimo di Data Control Language, ti consente di specificare diritti, permessi e altri controlli del sistema di database.

In questo tutorial vedrai l'uso dell'istruzione ALTER TABLE, che appartiene alla DDL. I seguenti contenuti saranno trattati in questo tutorial:

  • Perché serve l'istruzione ALTER TABLE
  • Creare una tabella in un database PostgreSQL
  • Eseguire diverse istruzioni ALTER TABLE in PostgreSQL

Nota: il tutorial non spiega come creare una tabella, inserire dati in una tabella o selezionare dati da una tabella in PostgreSQL. Se vuoi un ripasso su questi argomenti, puoi consultare questo articolo.

Perché serve l'istruzione ALTER TABLE

Le specifiche di un database possono cambiare nel tempo. Ad esempio, potresti dover aggiungere una colonna a una tabella specifica, oppure aggiungere un'altra chiave primaria a una tabella. Potresti anche dover cambiare il tipo di dato di una determinata colonna. Non sempre puoi permetterti di eliminare una tabella e ricrearla da zero. L'istruzione Alter Table ti permette di fare tutto questo in modo molto semplice. Con Alter Table puoi:

  • Aggiungere, modificare o eliminare una colonna
  • Aggiungere o eliminare un vincolo

Puoi anche abilitare/disabilitare i vincoli, ma questo non rientra nell'ambito di questo tutorial.

In questo tutorial vedrai ciascuno dei casi d'uso sopra, ma prima avrai bisogno di una tabella in PostgreSQL per iniziare. Nella prossima sezione, creerai una tabella semplice.

Creare una tabella in un database PostgreSQL

Creerai una tabella chiamata student_details in PostgreSQL (usando l'utility pgAdmin) con le seguenti colonne e tipi di dato:

  • student_id (integer)
  • student_full_name (character)
  • student_year (integer)

Partirai da questa tabella composta da sole tre colonne. Più avanti, proseguendo nel tutorial, aggiungerai altre colonne e modificherai la tabella in modi diversi. La seguente query di creazione ti consentirà di creare una tabella secondo le specifiche sopra:

CREATE TABLE student_details(
 student_id SERIAL,
 student_full_name VARCHAR (50),
 student_year VARCHAR (100)
);

Inseriamo anche qualche record in questa tabella:

  • INSERT INTO student_details(student_full_name, student_year) VALUES('John Doe','1st');
  • INSERT INTO student_details(student_full_name, student_year) VALUES('Chris Villa','3rd');

Poiché il tipo di dato di student_id è impostato su SERIAL, PostgreSQL incrementerà automaticamente il valore della colonna e il tipo di dato verrà interpretato come integer per impostazione predefinita.

La tabella student_details dovrebbe apparire così:

Tabella student_details

Ora hai una tabella pronta in PostgreSQL. Vediamo ora un diverso utilizzo di Alter Table nella prossima sezione.

Eseguire diverse istruzioni ALTER TABLE in PostgreSQL

In questa sezione vedrai l'uso di Alter Table nei due modi indicati sopra:

  • Aggiungere, modificare ed eliminare una colonna
  • Aggiungere ed eliminare un vincolo

Aggiungere, modificare o eliminare una colonna

Iniziamo aggiungendo un'altra colonna chiamata student_grade (di tipo carattere) alla tabella:

ALTER TABLE student_details ADD student_grade VARCHAR(5);

Ora la tabella dovrebbe essere come segue:

Tabella student_details con colonna student_grade

Nota che per le righe già inserite i valori della colonna student_grade sono null. Questo è implicito nella maggior parte dei RDBMS. Tuttavia, puoi sempre eseguire una query di update per aggiornare i valori. Vediamo ora come modificare una colonna con Alter Table. Cambierai la dimensione massima consentita per la colonna student_year da 100 a 10, perché allocare troppo spazio per soli tre caratteri (student_year può essere 1st, 2nd o 3rd) non è molto pratico.

ALTER TABLE student_details ALTER COLUMN student_year TYPE VARCHAR(10);

Puoi vedere il risultato nella figura seguente:

Tabella student_details con student_year (10)

Puoi anche rinominare una colonna. Vediamo come:

ALTER TABLE student_details RENAME student_id TO student_roll;

La query sopra rinomina la colonna student_id in student_roll. Puoi verificarlo anche con una query di select; il risultato dovrebbe essere simile alla figura seguente:

Tabella student_details con colonna rinominata in student_roll

Vediamo ora come eliminare una colonna da una tabella:

ALTER TABLE student_details DROP COLUMN student_year;

La query elimina la colonna student_year e, dopo l'esecuzione, la tabella dovrebbe essere così:

Tabella student_details dopo l'eliminazione della colonna student_year

Nota che se la colonna che stai eliminando è referenziata da un'altra tabella, potresti ricevere errori di violazione dell'integrità referenziale.

Ora vedrai come aggiungere ed eliminare vincoli a una tabella.

Aggiungere ed eliminare un vincolo.

La tabella student_details non ha una chiave primaria. La chiave primaria è una combinazione dei vincoli not null e unique. Impostiamo la colonna student_roll (aggiornata da student_id) come chiave primaria di student_details:

ALTER TABLE student_details ADD PRIMARY KEY (student_roll);

Puoi aggiungere anche altri vincoli; ad esempio, puoi aggiungere un vincolo check alla colonna student_grade in modo che i suoi valori siano sempre e solo A, B o C.

ALTER TABLE student_details ADD CONSTRAINT year_check CHECK (student_grade IN ('A', 'B', 'C'));

year_check è un nome segnaposto per il vincolo che stai aggiungendo alla tabella. Ora, se provi a inserire la seguente riga nella tabella, dovresti ottenere un errore:

INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd');

L'errore è simile al seguente:

risultato di errore

Eliminare un vincolo è analogo. Devi specificare il nome del vincolo che vuoi eliminare. Eliminiamo il vincolo che hai chiamato year_check:

ALTER TABLE student_details DROP CONSTRAINT year_check;

Verifichiamolo. Se il vincolo year_check è stato effettivamente eliminato, allora questa query INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd'); non dovrebbe causare alcun errore. La tabella ora contiene il record:

tabella finale

Puoi sperimentare anche con altri vincoli di tipo check.

Questo è tutto per il tutorial!

Questo tutorial ti ha presentato l'istruzione Alter Table per modificare in modo efficace lo schema di una tabella. Se vuoi migliorare le tue competenze SQL, potrebbero interessarti i seguenti corsi offerti da DataCamp:

Argomenti
SQL

Corsi su SQL

Corso

Analisi esplorativa dei dati in SQL

4 ore
189.5K
Scopri come capire cosa c'è in un database: le tabelle, come sono collegate tra loro e i dati che contengono.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro