Appunti di Programmazione

Creative Commons License

Pagina 1 2 3 4 5 6 7 8

Aggiungere, Modificare, Rinominare, Eliminare... le colonne di una Tabella

Può accadere di dovere rimaneggiare una o più colonne di una Tabella. In questa situazione entra in gioco l'istruzione ALTER TABLE. Per illustare alcuni dei comandi più comui, senza dovere rischiare di danneggiare il DB Basket, ho creato una Tabella Contatti, che ho provveduto ad eliminare alla fine dei test.

mysql> CREATE TABLE Contatti (
    -> Cognome VARCHAR(20) NOT NULL,
    -> Nome VARCHAR(20) NOT NULL,
    -> Cellulare INT NOT NULL,
    -> PRIMARY KEY(Cellulare));
Query OK, 0 rows affected (0,20 sec)


mysql> DESCRIBE Contatti;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| Cognome   | varchar(20) | NO   |     | NULL    |       |
| Nome      | varchar(20) | NO   |     | NULL    |       |
| Cellulare | int(11)     | NO   | PRI | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0,05 sec)

Aggiungere una colonna ad una Tabella.

mysql> ALTER TABLE Contatti ADD Indirizzo VARCHAR (50) NOT NULL;
Query OK, 0 rows affected (0,16 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> DESCRIBE Contatti;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| Cognome   | varchar(20) | NO   |     | NULL    |       |
| Nome      | varchar(20) | NO   |     | NULL    |       |
| Cellulare | int(11)     | NO   | PRI | NULL    |       |
| Indirizzo | varchar(50) | NO   |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0,00 sec)

Aggiungere un campo ad una Tabella come prima Colonna.

mysql> ALTER TABLE Contatti ADD Codice_Fiscale VARCHAR(20) NOT NULL FIRST;
Query OK, 0 rows affected (0,42 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> DESCRIBE Contatti;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| Codice_Fiscale | varchar(20) | NO   |     | NULL    |       |
| Cognome        | varchar(20) | NO   |     | NULL    |       |
| Nome           | varchar(20) | NO   |     | NULL    |       |
| Cellulare      | int(11)     | NO   | PRI | NULL    |       |
| Indirizzo      | varchar(50) | NO   |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
5 rows in set (0,00 sec)

Aggiungere una colonna ad una Tabella dopo una colonna specifica.

mysql> ALTER TABLE Contatti ADD Telefono_Casa INT AFTER Nome;
Query OK, 0 rows affected (0,12 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> DESCRIBE Contatti;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| Codice_Fiscale | varchar(20) | NO   |     | NULL    |       |
| Cognome        | varchar(20) | NO   |     | NULL    |       |
| Nome           | varchar(20) | NO   |     | NULL    |       |
| Telefono_Casa  | int(11)     | YES  |     | NULL    |       |
| Cellulare      | int(11)     | NO   | PRI | NULL    |       |
| Indirizzo      | varchar(50) | NO   |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
6 rows in set (0,00 sec)

Eliminare una colonna da una Tabella.

mysql> ALTER TABLE Contatti DROP Indirizzo;
Query OK, 0 rows affected (0,38 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> DESCRIBE Contatti;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| Codice_Fiscale | varchar(20) | NO   |     | NULL    |       |
| Cognome        | varchar(20) | NO   |     | NULL    |       |
| Nome           | varchar(20) | NO   |     | NULL    |       |
| Telefono_Casa  | int(11)     | YES  |     | NULL    |       |
| Cellulare      | int(11)     | NO   | PRI | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
5 rows in set (0,00 sec)

Eliminare una chiave primaria da una Tabella.

mysql> ALTER TABLE Contatti DROP PRIMARY KEY;
Query OK, 0 rows affected (0,14 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> DESCRIBE Contatti;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| Codice_Fiscale | varchar(20) | NO   |     | NULL    |       |
| Cognome        | varchar(20) | NO   |     | NULL    |       |
| Nome           | varchar(20) | NO   |     | NULL    |       |
| Telefono_Casa  | int(11)     | YES  |     | NULL    |       |
| Cellulare      | int(11)     | NO   |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
5 rows in set (0,00 sec)

Rinominare una Colonna di una Tabella.

mysql> ALTER TABLE Contatti CHANGE Cellulare Telefono_Cellulare INT NOT NULL;
Query OK, 0 rows affected (0,36 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> DESCRIBE Contatti;
+--------------------+-------------+------+-----+---------+-------+
| Field              | Type        | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+-------+
| Codice_Fiscale     | varchar(20) | NO   |     | NULL    |       |
| Cognome            | varchar(20) | NO   |     | NULL    |       |
| Nome               | varchar(20) | NO   |     | NULL    |       |
| Telefono_Casa      | int(11)     | YES  |     | NULL    |       |
| Telefono_Cellulare | int(11)     | NO   |     | NULL    |       |
+--------------------+-------------+------+-----+---------+-------+
5 rows in set (0,00 sec)

Modificare attributi di una Colonna di una Tabella.

mysql> ALTER TABLE Contatti MODIFY Telefono_Casa VARCHAR(15) NOT NULL;
Query OK, 0 rows affected (0,10 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> DESCRIBE Contatti;
+--------------------+-------------+------+-----+---------+-------+
| Field              | Type        | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+-------+
| Codice_Fiscale     | varchar(20) | NO   |     | NULL    |       |
| Cognome            | varchar(20) | NO   |     | NULL    |       |
| Nome               | varchar(20) | NO   |     | NULL    |       |
| Telefono_Casa      | varchar(15) | NO   |     | NULL    |       |
| Telefono_Cellulare | int(11)     | NO   |     | NULL    |       |
+--------------------+-------------+------+-----+---------+-------+
5 rows in set (0,00 sec)

Impostare come Chiave Primaria una Colonna di una Tabella.

mysql> ALTER TABLE Contatti MODIFY Codice_Fiscale VARCHAR(20) NOT NULL PRIMARY KEY;
Query OK, 0 rows affected (0,42 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> DESCRIBE Contatti;
+--------------------+-------------+------+-----+---------+-------+
| Field              | Type        | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+-------+
| Codice_Fiscale     | varchar(20) | NO   | PRI | NULL    |       |
| Cognome            | varchar(20) | NO   |     | NULL    |       |
| Nome               | varchar(20) | NO   |     | NULL    |       |
| Telefono_Casa      | varchar(15) | NO   |     | NULL    |       |
| Telefono_Cellulare | int(11)     | NO   |     | NULL    |       |
+--------------------+-------------+------+-----+---------+-------+
5 rows in set (0,01 sec)
Manuale Online: ALTER TABLE

Pagina 1 2 3 4 5 6 7 8