ALTER TABLE <schema_tabella>.<nome_tabella> ADD COLUMN <nome_colonna> <datatype>;
Esempio 1:
ALTER TABLE CATALOGO.MUSICA ADD COLUMN AUTORE VARCHAR(60);
Esempio 2:
ALTER TABLE CATALOGO.MUSICA ADD COLUMN ID CHAR(3) NOT NULL;
Esempio 3:
ALTER TABLE CATALOGO.MUSICA ADD COLUMN PREZZO_DISCO DECIMAL(5,2) ;
NOTA: E' possibile inserire colonne solo alla fine della tabella.
Se serve inserire una colonna in mezzo alle altre, è necessario creare una nuova tabella (mantenendo temporaneamente quella originaria) e ricreare la struttura della nuova tabella da zero inserendo anche la colonna aggiuntiva.
Posso fare in 2 modi:
1. Per inserire i dati nella tabella nuova (con la colonna in più), bisogna fare una INSERT di tutti i dati che si trovavano nella tabella di partenza. Ad esempio la insert inserisce in MUSICA2 i dati di MUSICA1, portandosi dietro anche i valori null e lasciando a null i valori relativi alla nuova colonna.
INSERT INTO CATALOGO.MUSICA2 (AUTORE,NOME_ALBUM,ANNO,PREZZO) (
select AUTORE,NOME_ALBUM,ANNO, PREZZO
from CATALOGO.MUSICA);
A questo punto si può eliminare la tabella originaria che ha una colonna in meno.
2. Altrimenti si può creare una nuova tabella con la colonna desiderata.
Faccio la export dei dati e della struttura della tabella, ma nella select metto anche la colonna (vuota) nella posizione in cui l'ho inserita nella create. A questo punto faccio la import sulla tabella.
Creo la nuova tabella con una colonna in più:
CREATE TABLE CATALOGO.MUSICA3 (
AUTORE CHAR(50) NOT NULL ,
TITOLO CHAR(50),
NOME_ALBUM CHAR(50) NOT NULL ,
ANNO INTEGER NOT NULL ,
ETICHETTA CHAR(50) )
IN USERSPACE1;
Faccio la export dei dati della tabella originale impostando il secondo campo come una stringa vuota (nella tabella originale infatti il secondo campo non esiste):
export to musica.ixf OF IXF select AUTORE, '', NOME_ALBUM, ANNO, ETICHETTA FROM CATALOGO.MUSICA;
Faccio la import dei dati esportati nella tabella nuova.
import from musica.ixf OF IXF insert into CATALOGO.MUSICA3;
Per esportare_importare i dati posso anche usare il formato .del invece del formato .ixf. La differenza tra i due metodi sta nel fatto che al momento dell'import, nella tabella la nuova colonna creata avrà dei valori NULL con la IXF, mentre avrà dei valori vuoti con la DEL.
Export/import in formato .del:
export to musica.del OF DEL select AUTORE, '', NOME_ALBUM, ANNO, ETICHETTA FROM CATALOGO.MUSICA;
import from musica.del OF DEL insert into CATALOGO.MUSICA3;