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:
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:
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:
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:
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:
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:
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:
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)
- 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
Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:
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 è riuscita, 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.
Le colonne ora dovrebbero essere le seguenti:
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)
- 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 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:
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)
- 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 testarlo, procedi come segue:
- Digitare la seguente query nell'editor di query:
INSERT INTO Book VALUES(7, 'migliori PostgreSQL Book', 'Gregory Bush');
- Fare clic sul pulsante Esegui.
Verrà restituito quanto segue:
Rinominare una tabella
Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:
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, procedere come segue:
- Fai clic su Database nel menu di navigazione a sinistra.
- Espandi Demo.
- Espandi schemi.
- Espandi Pubblico.
- Espandi tabelle.
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