PostgreSQL ALTER Tabella: AGGIUNGI colonna, rinomina esempi di colonna/tabella

Il comando ALTER TABLE viene utilizzato per modificare la struttura di a PostgreSQL tavolo. È il comando utilizzato per modificare le colonne della tabella o il nome della tabella.

Sintassi

Ecco la sintassi per il PostgreSQL Comando ALTER TABLE:

ALTER TABLE table-name action;

Il parametro table-name è il nome della tabella che devi modificare.

Il parametro di azione è l'azione che devi eseguire, ad esempio modificare il nome di una colonna, modificare il tipo di dati di una colonna, ecc.

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 eliminare una colonna della tabella. Verranno eliminati anche i vincoli e gli indici imposti alle colonne.
  • IMPOSTA/CANCELLA PREDEFINITO: utilizzare per rimuovere il valore predefinito per una colonna. Tuttavia, la modifica si applicherà solo a quelli successivi Istruzioni INSERT.
  • IMPOSTA/DROP NON NULL: modifica se una colonna consentirà valori null o meno.
  • IMPOSTA LE STATISTICHE: Per impostare l'obiettivo di raccolta statistiche per ciascuna colonna per le operazioni ANALYZE.
  • IMPOSTA ARCHIVIAZIONE: Per impostare la modalità di memorizzazione per una colonna. Ciò determinerà dove viene tenuta la colonna, se in linea o in una tabella supplementare.
  • SET SENZA OIDI: Utilizzare per rimuovere la vecchia colonna della tabella.
  • RINOMINARE: per modificare il nome della tabella o il nome di una colonna.
  • AGGIUNGI vincolo_tabella: Utilizzare per aggiungere un nuovo vincolo a una tabella Utilizza la stessa sintassi di CREA TABELLA comando.
  • VINCOLO DI CADUTA: utilizzare per eliminare un vincolo di tabella.
  • PROPRIETARIO: per modificare il proprietario di una tabella, sequenza, indice o vista per un determinato utente.
  • CLUSTER: per contrassegnare una tabella da utilizzare per eseguire future operazioni del cluster.

Modifica di una colonna

Una colonna può essere modificata in diversi modi. Tali modifiche possono essere eseguite utilizzando il comando ALTER TABLE. Parliamo di questi:

Aggiunta di 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-tabella è il nome della tabella da modificare.

Il nome-nuova-colonna è il nome della nuova colonna da aggiungere.

La definizione della colonna è the tipo di dati della nuova colonna.

Consulta la tabella Libri riportata di seguito:

Aggiunta di una nuova colonna in PostgreSQL

La tabella ha due colonne, id e name. Dobbiamo aggiungere una nuova colonna alla tabella e darle il nome author. Basta eseguire il seguente comando:

ALTER TABLE Book
  ADD author VARCHAR(50);

Dopo aver eseguito il comando precedente, la tabella Book è ora la seguente:

Aggiunta di una nuova colonna in PostgreSQL

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 nome-tabella è il nome della tabella la cui colonna deve essere rinominata.

Il vecchio nome è il nome vecchio/attuale della colonna.

Il nuovo nome è il nuovo nome della colonna. Considera la tabella Libro mostrata di seguito:

Libro:

Rinominare una colonna di tabella in PostgreSQL

Abbiamo bisogno del nome dell'autore della colonna 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:

Rinominare una colonna di tabella in PostgreSQL

Il nome della colonna è stato modificato correttamente.

Impostazione di un valore predefinito per una colonna

Possiamo impostare un valore predefinito per una colonna in modo che anche quando non si specifica un valore per quella colonna durante le operazioni INSERT, verrà utilizzato il valore predefinito. In questo caso, il comando ALTER TABLE può essere utilizzato con la seguente sintassi:

ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];

Il nome-tabella è il nome della tabella la cui colonna deve essere modificata.

Il nome-colonna è il nome per il quale deve essere impostato il valore predefinito.

Il valore è il valore predefinito per la colonna.

Considera la tabella dei libri riportata di seguito:

Impostazione di un valore predefinito per una colonna

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

Tieni presente che abbiamo inserito valori solo per due colonne, id e nome. Tuttavia, il valore predefinito è stato utilizzato per la colonna book_author:

Impostazione di un valore predefinito per una colonna

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 nome-tabella è il nome della tabella da modificare.

L'espressione è il vincolo da imporre alla 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:

Aggiunta di un vincolo di controllo

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;

Il nome-tabella è il nome corrente della tabella.

Il nome-nuova-tabella è il nuovo nome da assegnare alla tabella.

Ad esempio, cambiamo il nome della tabella Libro in Libri:

ALTER TABLE Book
  RENAME TO Books;

Utilizzando pgAdmin

Vediamo ora come è possibile eseguire queste azioni utilizzando pgAdmin.

Aggiunta di una nuova colonna

Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:

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.

Aggiunta di una nuova colonna utilizzando pgAdmin

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

ALTER TABLE Book
  ADD author VARCHAR(50);

Passo 4) Fare clic sul pulsante Esegui.

Aggiunta di una nuova colonna utilizzando pgAdmin

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.

Aggiunta di una nuova colonna utilizzando pgAdmin

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

Aggiunta di una nuova colonna utilizzando pgAdmin

Rinominare una colonna di tabella

Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:

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.

Rinominare una colonna di tabella utilizzando pgAdmin

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.

Rinominare una colonna di tabella utilizzando pgAdmin

Passo 5) Per verificare se la modifica è riuscita, 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.

Rinominare una colonna di tabella utilizzando pgAdmin

Le colonne ora dovrebbero essere le seguenti:

Rinominare una colonna di tabella utilizzando pgAdmin

La colonna è stata modificata con successo.

Impostazione di un valore predefinito per una colonna

Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:

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.

Impostazione di un valore predefinito per una colonna

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.

Impostazione di un valore predefinito per una colonna

Passo 5) Per effettuare 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:

Impostazione di un valore predefinito per una colonna

Aggiunta di un vincolo di controllo

Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:

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.

Aggiunta di un vincolo di controllo utilizzando pgAdmin

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.

Aggiunta di un vincolo di controllo utilizzando pgAdmin

Passo 5) Per testarlo, procedi come segue:

  1. Digitare la seguente query nell'editor di query:
    INSERT INTO Book
    VALUES(7, 'migliori PostgreSQL Book', 'Gregory Bush');
    
  2. Fare clic sul pulsante Esegui.

    Aggiunta di un vincolo di controllo utilizzando pgAdmin

    Verrà restituito quanto segue:

Aggiunta di un vincolo di controllo utilizzando pgAdmin

Rinominare una tabella

Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:

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.

Rinominare una tabella utilizzando pgAdmin

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

ALTER TABLE Book
  RENAME TO Books;

Passo 4) Fare clic sul pulsante Esegui.

Rinominare una tabella utilizzando pgAdmin

Passo 5) Per verificare se la tabella è stata rinominata, 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.

Rinominare una tabella utilizzando pgAdmin

La tabella è stata rinominata correttamente.

Sintesi

  • L'istruzione ALTER TABLE viene utilizzata per modificare la struttura della tabella.
  • Il comando ALTER TABLE assume varie forme a seconda dell'attività che è necessario eseguire.
  • La struttura può essere costituita dalle colonne della tabella o dalla tabella stessa.
  • Possiamo usare questa istruzione per cambiare il nome di una tabella.
  • Il comando ALTER TABLE può essere utilizzato per impostare il valore predefinito di una colonna.
  • L'istruzione può essere utilizzata per convalidare i valori immessi in una colonna della tabella.

Scarica il database utilizzato in questo tutorial