PostgreSQL ALTER TABLE: Aggiungi e rinomina colonna
โก Riepilogo intelligente
PostgreSQL Il comando ALTER TABLE modifica la struttura di una tabella esistente, consentendo di aggiungere o eliminare colonne, rinominare una colonna o l'intera tabella, impostare valori predefiniti e applicare vincoli di controllo senza ricreare l'oggetto.

Che cos'รจ ALTER TABLE in PostgreSQL?
Migliori ALTER TABLE il comando viene utilizzato per modificare la struttura di un PostgreSQL tabella. ร il comando utilizzato per modificare le colonne della tabella o il nome della tabella stessa, senza dropping e ricreando l'oggetto.
Sintassi
Ecco la sintassi per il PostgreSQL Comando ALTER TABLE:
ALTER TABLE table-name action;
Il parametro table-name indica il nome della tabella che si desidera modificare. Il parametro action indica l'azione da eseguire, ad esempio la modifica del nome di una colonna o del tipo di dati di una colonna.
Descrizione
Il comando ALTER TABLE modifica la definizione di una tabella esistente. Accetta le seguenti sottoforme:
- AGGIUNGI COLONNA: utilizza una sintassi simile al comando CREATE TABLE per aggiungere una nuova colonna a una tabella.
- COLONNA A CADUTA: per la cadutaping una colonna di tabella. Anche i vincoli e gli indici imposti sulle colonne verranno eliminati.
- IMPOSTA/CANCELLA PREDEFINITO: utilizzato per impostare o rimuovere il valore predefinito per una colonna. La modifica si applica solo alle successive Istruzioni INSERT.
- IMPOSTA/DROP NON NULL: modifica se una colonna consente valori nulli o meno.
- STATISTICHE DELL'INSERIMENTO: per impostare l'obiettivo di raccolta delle statistiche per ciascuna colonna per le operazioni ANALYZE.
- IMPOSTA ARCHIVIAZIONE: per impostare la modalitร di memorizzazione di una colonna, sia in linea che in una tabella supplementare.
- SET SENZA OIDI: utilizzato per rimuovere la vecchia colonna OID della tabella.
- RINOMINARE: per modificare il nome della tabella o il nome di una colonna.
- AGGIUNGI vincolo_tabella: utilizzato per aggiungere un nuovo vincolo a una tabella. Utilizza la stessa sintassi di CREA TABELLA comando.
- VINCOLO DI CADUTA: utilizzato per la cadutaping un vincolo di tabella.
- PROPRIETARIO: per modificare il proprietario di una tabella, sequenza, indice o vista assegnandolo a un determinato utente.
- CLUSTER: per contrassegnare una tabella da utilizzare per future operazioni del cluster.
Modifica di una colonna
Una colonna puรฒ essere modificata in diversi modi. Tali modifiche vengono effettuate utilizzando il comando ALTER TABLE. Analizziamoli di seguito.
Aggiungere una nuova colonna
Per aggiungere una nuova colonna a a PostgreSQL tabella, il comando ALTER TABLE viene utilizzato con la seguente sintassi:
ALTER TABLE table-name ADD new-column-name column-definition;
Il nome della tabella รจ il nome della tabella da modificare. Il nome della nuova colonna รจ il nome della nuova colonna da aggiungere. La definizione della colonna รจ la tipo di dati della nuova colonna. Vedi la tabella dei libri mostrata di seguito:
La tabella ha due colonne, id e name. Dobbiamo aggiungere una nuova colonna alla tabella e chiamarla author. Esegui semplicemente il seguente comando:
ALTER TABLE Book ADD author VARCHAR(50);
Dopo aver eseguito il comando precedente, la tabella Book รจ ora la seguente:
La nuova colonna รจ stata aggiunta correttamente.
Rinominare una colonna di tabella
Possiamo usare il comando ALTER TABLE per cambiare il nome di una colonna. In questo caso, il comando viene usato con la seguente sintassi:
ALTER TABLE table-name RENAME COLUMN old-name TO new-name;
Il parametro table-name indica il nome della tabella la cui colonna deve essere rinominata. Il parametro old-name indica il nome corrente della colonna, mentre il parametro new-name indica il nuovo nome della colonna. Si consideri la tabella Book mostrata di seguito:
Libro:
Dobbiamo rinominare la colonna "author" in "book_author". Ecco il comando:
ALTER TABLE Book RENAME COLUMN author TO book_author;
Dopo aver eseguito il comando, possiamo visualizzare la struttura della tabella:
Il nome della colonna รจ stato modificato correttamente.
Impostazione di un valore predefinito per una colonna
ร possibile impostare un valore predefinito per una colonna in modo che, anche quando non si specifica un valore per tale colonna durante le operazioni di INSERT, venga utilizzato il valore predefinito. In questo caso, รจ possibile utilizzare il comando ALTER TABLE con la seguente sintassi:
ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];
Il parametro table-name indica il nome della tabella di cui si desidera modificare la colonna. Il parametro column-name indica il nome della colonna di cui si desidera impostare il valore predefinito, mentre il parametro value indica il valore predefinito per la colonna. Si consideri la tabella Book riportata di seguito:
Dobbiamo impostare un valore predefinito per la colonna book_author. Possiamo eseguire il seguente comando:
ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';
Ora inseriamo una riga nella tabella:
INSERT INTO Book (id, name) VALUES (6, 'PostgreSQL for Beginners');
Si noti che abbiamo inserito valori solo per due colonne, id e name. Tuttavia, per la colonna book_author รจ stato utilizzato il valore predefinito:
Aggiunta di un vincolo di controllo
Un vincolo di controllo aiuta a convalidare i record che vengono inseriti in una tabella. Possiamo farlo combinando il comando ALTER TABLE con l'istruzione ADD CHECK. Sintassi:
ALTER TABLE table-name ADD CHECK expression;
Il parametro table-name indica il nome della tabella da modificare, mentre expression rappresenta il vincolo da imporre sulla colonna della tabella. Modifichiamo la colonna book_author della tabella Book in modo che accetti solo i valori Nicholas e Samuel:
ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'));
Ora proviamo a inserire un valore diverso da Nicholas o Samuel nella colonna book_author della tabella Book:
INSERT INTO Book VALUES(7, 'migliori PostgreSQL Book', 'Gregory Bush');
L'istruzione restituirร il seguente errore:
L'operazione di inserimento non รจ riuscita perchรฉ abbiamo violato il vincolo check.
Rinominare una tabella
Ecco la sintassi del comando ALTER TABLE per rinominare una tabella:
ALTER TABLE table-name RENAME TO new-table-name;
`table-name` รจ il nome corrente della tabella, mentre `new-table-name` รจ il nuovo nome da assegnare alla tabella. Ad esempio, cambiamo il nome della tabella "Book" in "Books":
ALTER TABLE Book RENAME TO Books;
Utilizzando pgAdmin
Finora le azioni sono state eseguite dalla shell SQL. Ora vediamo come queste stesse azioni possono essere eseguite visivamente utilizzando pgAdmin.
Aggiungere una nuova colonna
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
ALTER TABLE Book ADD author VARCHAR(50);
Passo 4) Fare clic sul pulsante Esegui.
Passo 5) Per verificare se la colonna รจ stata aggiunta, procedere come segue:
- Fai clic su Database nel menu di navigazione a sinistra.
- Espandi Demo.
- Espandi schemi.
- Espandi Pubblico.
- Espandi tabelle.
- Espandi libro.
- Espandi colonne.
La colonna avrebbe dovuto essere aggiunta, come mostrato di seguito:
Rinominare una colonna di tabella
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
ALTER TABLE Book RENAME COLUMN author TO book_author;
Passo 4) Fare clic sul pulsante Esegui.
Passo 5) Per verificare se la modifica รจ andata a buon fine, espandi le colonne della tabella dei libri come in precedenza:
Le colonne ora dovrebbero essere le seguenti:
La colonna รจ stata modificata con successo.
Impostazione di un valore predefinito per una colonna
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';
Passo 4) Fare clic sul pulsante Esegui.
Passo 5) Per eseguire il test, eseguire il seguente comando nell'editor di query:
INSERT INTO Book (id, name) VALUES (6, 'PostgreSQL for Beginners')
Passo 6) Ora possiamo interrogare la tabella per verificare se il valore predefinito รจ stato inserito nella colonna book_author:
Aggiunta di un vincolo di controllo
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))
Passo 4) Fare clic sul pulsante Esegui.
Passo 5) Per testare questa funzionalitร , digita la seguente query nell'editor di query e fai clic sul pulsante Esegui:
INSERT INTO Book VALUES(7, 'migliori PostgreSQL Book', 'Gregory Bush');
Verrร restituito quanto segue:
Rinominare una tabella
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
ALTER TABLE Book RENAME TO Books;
Passo 4) Fare clic sul pulsante Esegui.
Passo 5) Per verificare se la tabella รจ stata rinominata, espandere Database > Demo > Schemi > Pubblico > Tabelle:
La tabella รจ stata rinominata correttamente.
Scarica il database utilizzato in questo tutorial

























