Sei qui: Home » Guide » MySQL » Guida di base a MySQL » Modificare una tabella

Modificare una tabella

L'istruzione ALTER TABLE serve a modificare la struttura di una tabella. Con ALTER TABLE, a titolo di esempio, è possibile inserire o rimuovere nuovi campi, modificare il tipo del campo, inserire o rimuovere chiavi primarie e via dicendo. Prenderemo ad esempio il nostro database banca con la sua tabella clienti che è così formata:

SHOW COLUMS FROM clienti

 

+---------------------+-------------+------+-----+---------+----------------+
| Field               | Type        | Null | Key | Default | Extra          |
+---------------------+-------------+------+-----+---------+----------------+
| ID                  | int(11)     | NO   | PRI | NULL    | auto_increment |
| nome                | varchar(40) | NO   |     | NULL    |                |
| cognome             | varchar(40) | NO   |     | NULL    |                |
| telefono            | varchar(20) | NO   |     | NULL    |                |
| data_apertura_conto | date        | NO   |     | NULL    |                |
| tipo_conto          | varchar(20) | NO   |     | NULL    |                |
+---------------------+-------------+------+-----+---------+----------------+

Eliminare una colonna

Supponiamo di voler eliminare la colonna telefono dalla tabella clienti. La query sarà la seguente:

ALTER TABLE clienti DROP telefono;

 

+---------------------+-------------+------+-----+---------+----------------+
| Field               | Type        | Null | Key | Default | Extra          |
+---------------------+-------------+------+-----+---------+----------------+
| ID                  | int(11)     | NO   | PRI | NULL    | auto_increment |
| nome                | varchar(40) | NO   |     | NULL    |                |
| cognome             | varchar(40) | NO   |     | NULL    |                |
| data_apertura_conto | date        | NO   |     | NULL    |                |
| tipo_conto          | varchar(20) | NO   |     | NULL    |                |
+---------------------+-------------+------+-----+---------+----------------+

Da come è possibile vedere il campo telefono è stato eliminato.

Aggiungere un campo

Se volessimo rimettere il campo telefono immediatamente dopo il campo cognome potremmo usare questa query:

ALTER TABLE clienti ADD telefono varchar(20) NOT NULL AFTER cognome;

 

+---------------------+-------------+------+-----+---------+----------------+
| Field               | Type        | Null | Key | Default | Extra          |
+---------------------+-------------+------+-----+---------+----------------+
| ID                  | int(11)     | NO   | PRI | NULL    | auto_increment |
| nome                | varchar(40) | NO   |     | NULL    |                |
| cognome             | varchar(40) | NO   |     | NULL    |                |
| telefono            | varchar(20) | NO   |     | NULL    |                |
| data_apertura_conto | date        | NO   |     | NULL    |                |
| tipo_conto          | varchar(20) | NO   |     | NULL    |                |
+---------------------+-------------+------+-----+---------+----------------+

Il campo telefono è stato nuovamente reinserito

Rinominare il nome di un campo

Per rinominare il noeme di un campo, ad esempio modificare il campo telefono in numero_telefono è possibile utilizzare la query:
ALTER TABLE clienti CHANGE telefono numero_telefono VARCHAR(25);

+---------------------+-------------+------+-----+---------+----------------+
| Field               | Type        | Null | Key | Default | Extra          |
+---------------------+-------------+------+-----+---------+----------------+
| ID                  | int(11)     | NO   | PRI | NULL    | auto_increment |
| nome                | varchar(40) | NO   |     | NULL    |                |
| cognome             | varchar(40) | NO   |     | NULL    |                |
| numero_telefono     | varchar(25) | YES  |     | NULL    |                |
| data_apertura_conto | date        | NO   |     | NULL    |                |
| tipo_conto          | varchar(20) | NO   |     | NULL    |                |
+---------------------+-------------+------+-----+---------+----------------+
Da come è possibile vedere il campo telefono è stato rinominato in numero_telefono, è stato tolto l'attributo not_null ed il valore di varchar è passato da 20 a 25. Per ripristinare la query è la seguente:
ALTER TABLE clienti CHANGE numero_telefono telefono VARCHAR(20) NOT NULL;
+---------------------+-------------+------+-----+---------+----------------+
| Field               | Type        | Null | Key | Default | Extra          |
+---------------------+-------------+------+-----+---------+----------------+
| ID                  | int(11)     | NO   | PRI | NULL    | auto_increment |
| nome                | varchar(40) | NO   |     | NULL    |                |
| cognome             | varchar(40) | NO   |     | NULL    |                |
| telefono            | varchar(20) | NO   |     | NULL    |                |
| data_apertura_conto | date        | NO   |     | NULL    |                |
| tipo_conto          | varchar(20) | NO   |     | NULL    |                |
+---------------------+-------------+------+-----+---------+----------------+

Ricerca
News
giu 3, 2010
È stato appena rilasciato, dalla società JetBrains, un nuovo IDE per la creazione rapida di progetti Web/PHP/MySQL.

tag: phpstorm, IDE, php

apr 3, 2010
Rilasciato JQuery UI in versione stabile. La release 1.8, oltre a numerosi bugfix, possiede due interessanti Widgets.

tag: jquery

mar 12, 2010
È stato da poco rilasciato il famoso forum SMF in versione 2.0RC3; tanti bugfix e un'aspetto più consolidato.

tag: smf, vbulletin, forum

mar 11, 2010
Un articolo "passo-passo" che spiega come configurare Google Apps con un qualsiasi tipo di pacchetto TopHost. Un'accoppiata vincente!

tag: TopHost, Google Apps

mar 9, 2010
Inserita la guida completa a PHP

tag: howtoprog

mar 8, 2010
Il sito è in fase di restyling; ci scusiamo per gli eventuali disagi ma, come vedrete a breve, vale la pena pazientare qualche giorno!