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.

  • ๐Ÿงฑ Sintassi: L'azione ALTER TABLE nome-tabella esegue una modifica strutturale per ogni istruzione.
  • โž• Aggiungi colonna: ADD column-name data-type aggiunge una nuova colonna alla tabella.
  • ๏ธ Rinominare: RENAME COLUMN e RENAME TO modificano il nome di una colonna o il nome della tabella.
  • โš™๏ธ Valore di default: ALTER COLUMN SET DEFAULT fornisce un valore per le future righe INSERT.
  • ๐Ÿ›ก๏ธ Verifica il vincolo: ADD CHECK convalida i nuovi dati e rifiuta i valori che non soddisfano la regola.
  • ๐Ÿค– Migrazioni di IA: Gli assistenti basati sull'IA redigono gli script ALTER TABLE e li esaminano per garantirne la corretta implementazione.

PostgreSQL ALTER TABLE

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:

PostgreSQL Esempio di ALTER TABLE

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:

PostgreSQL Esempio di ALTER TABLE

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:

PostgreSQL Esempio di ALTER TABLE

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:

PostgreSQL Esempio di ALTER TABLE

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:

PostgreSQL Esempio di ALTER TABLE

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:

PostgreSQL Esempio di ALTER TABLE

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:

PostgreSQL Esempio di ALTER TABLE

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)

  1. Dalla barra di navigazione a sinistra, fare clic su Database.
  2. Fare clic su Demo.

PostgreSQL Esempio di ALTER TABLE

Passo 3) Digita la query nell'editor di query:

ALTER TABLE Book
  ADD author VARCHAR(50);

Passo 4) Fare clic sul pulsante Esegui.

PostgreSQL Esempio di ALTER TABLE

Passo 5) Per verificare se la colonna รจ stata aggiunta, procedere come segue:

  1. Fai clic su Database nel menu di navigazione a sinistra.
  2. Espandi Demo.
  3. Espandi schemi.
  4. Espandi Pubblico.
  5. Espandi tabelle.
  6. Espandi libro.
  7. Espandi colonne.

PostgreSQL Esempio di ALTER TABLE

La colonna avrebbe dovuto essere aggiunta, come mostrato di seguito:

PostgreSQL Esempio di ALTER TABLE

Rinominare una colonna di tabella

Passo 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fare clic su Database.
  2. Fare clic su Demo.

PostgreSQL Esempio di ALTER TABLE

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.

PostgreSQL Esempio di ALTER TABLE

Passo 5) Per verificare se la modifica รจ andata a buon fine, espandi le colonne della tabella dei libri come in precedenza:

PostgreSQL Esempio di ALTER TABLE

Le colonne ora dovrebbero essere le seguenti:

PostgreSQL Esempio di ALTER TABLE

La colonna รจ stata modificata con successo.

Impostazione di un valore predefinito per una colonna

Passo 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fare clic su Database.
  2. Fare clic su Demo.

PostgreSQL Esempio di ALTER TABLE

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.

PostgreSQL Esempio di ALTER TABLE

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:

PostgreSQL Esempio di ALTER TABLE

Aggiunta di un vincolo di controllo

Passo 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fare clic su Database.
  2. Fare clic su Demo.

PostgreSQL Esempio di ALTER TABLE

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.

PostgreSQL Esempio di ALTER TABLE

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');

PostgreSQL Esempio di ALTER TABLE

Verrร  restituito quanto segue:

PostgreSQL Esempio di ALTER TABLE

Rinominare una tabella

Passo 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fare clic su Database.
  2. Fare clic su Demo.

PostgreSQL Esempio di ALTER TABLE

Passo 3) Digita la query nell'editor di query:

ALTER TABLE Book
  RENAME TO Books;

Passo 4) Fare clic sul pulsante Esegui.

PostgreSQL Esempio di ALTER TABLE

Passo 5) Per verificare se la tabella รจ stata rinominata, espandere Database > Demo > Schemi > Pubblico > Tabelle:

PostgreSQL Esempio di ALTER TABLE

La tabella รจ stata rinominata correttamente.

Scarica il database utilizzato in questo tutorial

DOMANDE FREQUENTI

Utilizzare ALTER TABLE nome_tabella ALTER COLUMN nome_colonna TYPE nuovo_tipo. Aggiungere una clausola USING quando i valori necessitano di conversione, ad esempio ALTER COLUMN prezzo TYPE numerico USING prezzo::numerico. PostgreSQL riscrive la colonna e verifica che i dati esistenti siano compatibili con il nuovo tipo.

Solo se il valore predefinito รจ volatile. Poichรฉ PostgreSQL 11. L'opzione AGGIUNGI COLONNA con un valore predefinito costante aggiorna il catalogo istantaneamente senza riscrivere le righe. Un valore predefinito che richiama una funzione impone comunque una riscrittura completa della tabella e un blocco piรน robusto.

No. PostgreSQL Non รจ possibile modificare un vincolo esistente. Elimina il vincolo esistente con DROP CONSTRAINT, quindi aggiungi quello corretto con ADD CONSTRAINT. Inserisci entrambe le istruzioni in una transazione in modo che la tabella non rimanga mai senza la regola.

Elenca diverse azioni separate da virgole: ALTER TABLE Book ADD COLUMN price int, ADD COLUMN isbn text. PostgreSQL Applica ogni modifica in un unico passaggio, il che รจ piรน veloce e mantiene la tabella coerente.

Utilizzare ALTER TABLE nome_tabella ADD PRIMARY KEY (colonna) oppure ADD CONSTRAINT nome_chiave_primary KEY (colonna). La colonna deve contenere valori univoci e non nulli; PostgreSQL crea automaticamente un indice univoco di supporto al momento della creazione della chiave.

RENAME aggiorna solo il nome della tabella nel catalogo di sistema. Le righe, gli indici e i vincoli memorizzati rimangono invariati. Le viste o le funzioni che fanno riferimento al vecchio nome potrebbero comunque richiedere un aggiornamento successivo.

Gli assistenti IA generano script ALTER TABLE a partire da una descrizione della modifica, ordinano correttamente le operazioni di ADD, RENAME e di vincolo e aggiungono clausole USING per i cast di tipo. Inoltre, segnalano le operazioni che riscrivono tabelle di grandi dimensioni o che mantengono blocchi complessi.

Sรฌ. Un copilota AI esamina una migrazione, avverte di blocchi o riscritture complete delle tabelle, suggerisce l'elaborazione in batch o la creazione simultanea degli indici e raccomanda il wrapping.ping modifiche in una transazione, rendendo gli aggiornamenti dello schema piรน sicuri da implementare.

Riassumi questo post con: