Home
  • Recipes
  • Aggiungere una colonna a una tabella MySQL
Sante Caserio
pubblicato più di 2 anni fa

Aggiungere una colonna a una tabella MySQL

In MySQL l’aggiunta di una colonna ad una tabella è un operazione che avviene attraverso ALTER TABLE e ADD COLUMN ...

In MySQL l’aggiunta di una colonna ad una tabella è un operazione che avviene attraverso ALTER TABLE e ADD COLUMN, nel mondo reale è facile ossservare che: molti amministratori preferiscono scrivere a mano i comandi SQL, piuttosto che utilizzare un’interfaccia grafica, per effettuare semplici modifiche a un database. Data la complessità dell’istruzione ALTER TABLE, però, a volte semplici operazioni come l’aggiunta di una colonna a una tabella vengono eseguite attraverso una GUI. Peraltro poche GUI permettono realmente di effettuare qualsiasi tipo di modifica, mentre con i programmi prodotti da MySQL/Sun tali operazioni possono risultare complesse o avere effetti collaterali, a causa di bug. Varrebbe la pena di studiare alcune clausole di ALTER TABLE. Alcune operazioni, come l’aggiunta di una colonna, risultano essere relativamente semplici.

La sintassi generale per l’aggiunta di una colonna è questa:

1ALTER TABLE nome_tabella ADD COLUMN [ definizione_colonna ] [ FIRST | AFTER nome_colonna ]

nome_tabella è il nome della tabella a cui si desidera aggiungere una colonna. MySQL presume che essa si trovi nel database selezionato, se così non è si può specificare nella forma: nome_database.nome_colonna.

Definizione della colonna

La definizione include il nome della colonna seguito da altre informazioni. Tra queste, il tipo di dato è l’unica non opzionale.

Tipo di dato e dimensioni

Il tipo di dato da utilizzare va specificato subito dopo il nome della nuova colonna. Subito dopo, senza lasciare alcuno spazio, si può specificare tra parentesi le dimensioni del campo. Esse devono essere comprese tra i limiti consentiti dal tipo di dato scelto, altrimenti verranno modificate da MySQL, nel qual caso si riceverà un warning. Le dimensioni sono espresse in numero di caratteri per i dati di tipo stringa e in byte per i dati di tipo numerico.

Esempi:

1ALTER TABLE t1 ADD COLUMN id INTEGER(4);
2ALTER TABLE t1 ADD COLUMN quantita MEDIUMINT;
3ALTER TABLE t1 ADD COLUMN descrizione CHAR(200);

Per i tipi interi, è possibile specificare se il dato deve essere con segno (SIGNED) o, come di default, senza segno (UNSIGNED).

1ALTER TABLE t1 ADD COLUMN id UNSIGNED INT(4);

Per i tipi ENUM e SET non bisogna specificare le dimensioni, ma una lista dei valori ammessi.

1ALTER TABLE t1 ADD COLUMN colore ENUM('rosso', 'giallo', 'nero');

Per particolari tipi di dati esistono altre opzioni, che richiedono una spiegazione più approfondita e non possono essere spiegate qui per ragioni di brevità.

NULL e NOT NULL

Se non è specificato diversamente, un campo può contenere il non-valore NULL. Si può inserire questa opzione dopo il tipo di dato, specificando NULL o NOT NULL.

1ALTER TABLE t1 ADD COLUMN descrizione VARCHAR(200) NOT NULL;
2ALTER TABLE t1 ADD COLUMN qta UNSIGNED INT NULL;

DEFAULT

E’ possibile specificare quale valore deve avere un campo nel caso in cui non venga valorizzato esplicitamente in fase di inserimento. Per fare questo, si utilizza la parola chiave DEFAULT seguita dal valore. Esso deve essere una costante e non un’espressione SQL.

1ALTER TABLE t1 ADD COLUMN punteggio INT DEFAULT 0;
2ALTER TABLE t1 ADD COLUMN qta INT DEFAULT NULL;

Non è possibile specificare un valore di default se il campo è una chiave primaria autoincrementale. Inoltre non ha senso specificarlo se sul campo esiste un indice UNIQUE. Infine non è consentito specificare un valore non ammesso (per esempio ‘ABC’ per un campo intero o NULL per un campo NOT NULL).

Commenti

E’ possibile registrare un commento associato alla colonna. Esso sarà visibile nella tabella COLUMNS dell’INFORMATION_SCHEMA e verrà visualizzato da tutte le istruzioni che mostrano l’elenco delle colonne presenti in una tabella (SHOW COLUMNS, DESC, SHOW CREATE TABLE). Il commento deve essere preceduto dalla parola chiave COMMENT; deve essere una stringa costante e non un’espressione SQL.

1ALTER TABLE t1 ADD COLUMN qta INT COMMENT 'quantita';

I commenti sulle colonne (o sulla tabella) non devono essere confusi, né sintatticamente né concettualmente, con i commenti SQL:

1ALTER TABLE t1 ADD COLUMN qta INT NULL # voglio sia chiaro che la colonna è NULL

FIRST e AFTER

Le clausole opzionali FIRST e AFTER servono a specificare in quale posizione dovrà trovarsi fisicamente la nuova colonna all’interno del file FRM. Sebbene la posizione dei campi non abbia importanza nella teoria relazionale e nell’SQL, dando un ordine arbitrario è possibile visualizzare i campi dell’entità in maniera più agevole e logica. Se queste clausole non vengono specificate, la colonna viene aggiunta alla fine. Esempi:

1ALTER TABLE mia_tabella ADD COLUMN id FIRST; -- la colonna nuova sarà la prima
2ALTER TABLE mia_tabella ADD COLUMN name AFTER id;

Condividi su:

Esprimi un voto:

  • Current rating: 0.0/5
  • 1
  • 2
  • 3
  • 4
  • 5

Argomenti chiave:

Ultimi commenti Ultimi commenti

Esegui il Login oppure registrati per scrivere un commento.
Cerca nel sito...
Ultime recipes

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL MySQL Report un tool di shell per tenere tutto sotto controllo

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL


Vai alla recipe

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL MySQLSniffer sniffare il traffico TCP di MySQL

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL


Vai alla recipe

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso myisamchk riparare file MyISAM

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso il file myisamchk


Vai alla recipe

Un tool per comprimere le tabelle MyISAM fino a oltre il 50% myisampack comprimere file MyISAM

Un tool per comprimere le tabelle MyISAM fino a oltre il 50%


Vai alla recipe

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun mysqlshow visualizzare le informazioni sul database MySQL

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun client


Vai alla recipe

Utilizzando UNION / UNION ALL su campi int unsigned zerofill,
ho notato che MysqlUNION / UNION ALL su campi int unsigned zerofill. di DebUsr
Vai al tip

Utilizzo di funzioni come alias di campo tramite l'impiego di prepared statementReport con alias di campo dinamici di john_revelator
Vai al tip

Può capitare che sia necessario eseguire un dump di database in formato Comma SeparatedEsecuzione dump in formato CSV (tabelle in engine MyIsam esportate in formato CSV) di ghigomatto
Vai al tip

E' possibile eseguire le query SQL contenute in un file di testo. Questo è utileEseguire le query da un file di testo di Sante Caserio
Vai al tip

Se vogliamo fare il backup di tutti i database con mysqldump, e ne abbiamo parecchiFare il backup di tutti i database di Sante Caserio
Vai al tip

Salve, dopo tante storie ho studiato il php e mysql .. . che in questo forum parlavo php e campo mysql timestamp di gigi Vai al topic

ciao a tutti ho creato un forum su aruba ma non so come farlo visualizzare nel mio aruba di albertodiprima Vai al topic

Salve a tutti gente, questo è il mio primo post su questo forum e questo a causa Problema Gravissimo con AutoIncrement di stefanoadsl Vai al topic

Salve! Mi presento, mi chiamo Adriano e sono uno studente di ingegneria informatica Problema Trigger di Xanakro Vai al topic

Ciao a tutti!
Volevo chiedere una informazione.
Ho una query che lanciata la prima Query Eseguita più volte di OltreLeStelle Vai al topic