MySQL - Comando ALTER

Il MySQL ALTER Il comando è molto utile quando si desidera modificare un nome della tabella, qualsiasi campo della tabella o se si desidera aggiungere o eliminare una colonna esistente in una tabella.

Cominciamo con la creazione di una tabella chiamata testalter_tbl.

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> create table testalter_tbl
   -> (
   -> i INT,
   -> c CHAR(1)
   -> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field |  Type   | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|   i   | int(11) | YES  |     |   NULL  |       |
|   c   | char(1) | YES  |     |   NULL  |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Rilascio, aggiunta o riposizionamento di una colonna

Se desideri eliminare una colonna i esistente dalla tabella MySQL sopra, utilizzerai l'estensione DROP clausola insieme alla ALTER comando come mostrato di seguito -

mysql> ALTER TABLE testalter_tbl  DROP i;

UN DROP la clausola non funzionerà se la colonna è l'unica rimasta nella tabella.

Per aggiungere una colonna, utilizzare AGGIUNGI e specificare la definizione della colonna. La seguente istruzione ripristina il filei colonna al testalter_tbl -

mysql> ALTER TABLE testalter_tbl ADD i INT;

Dopo aver emesso questa dichiarazione, testalter conterrà le stesse due colonne che aveva quando hai creato la tabella per la prima volta, ma non avrà la stessa struttura. Questo perché ci sono nuove colonne che vengono aggiunte alla fine della tabella per impostazione predefinita. Quindi anche sei originariamente era la prima colonna in mytbl, ora è l'ultima.

mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field |  Type   | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|   c   | char(1) | YES  |     |   NULL  |       |
|   i   | int(11) | YES  |     |   NULL  |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Per indicare che desideri una colonna in una posizione specifica all'interno della tabella, usa FIRST per renderla la prima colonna o AFTER col_name per indicare che la nuova colonna deve essere posizionata dopo col_name.

Prova quanto segue ALTER TABLE dichiarazioni, utilizzando SHOW COLUMNS dopo ognuno per vedere quale effetto ha ciascuno -

ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;

Gli specificatori FIRST e AFTER funzionano solo con la clausola ADD. Ciò significa che se vuoi riposizionare una colonna esistente all'interno di una tabella, devi prima farloDROP e poi ADD nella nuova posizione.

Alterare (cambiare) una definizione di colonna o un nome

Per modificare la definizione di una colonna, utilizzare MODIFY o CHANGE clausola insieme al comando ALTER.

Ad esempio, per cambiare colonna c da CHAR (1) a CHAR (10), puoi usare il seguente comando:

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

Con CHANGE, la sintassi è leggermente diversa. Dopo la parola chiave CHANGE, assegna un nome alla colonna che desideri modificare, quindi specifica la nuova definizione, che include il nuovo nome.

Prova il seguente esempio:

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;

Se ora usi CHANGE per convertire j a partire dal BIGINT torna a INT senza modificare il nome della colonna, l'istruzione sarà come mostrato di seguito -

mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

The Effect of ALTER TABLE on Null and Default Value Attributes- Quando MODIFICATE o CAMBIATE una colonna, potete anche specificare se la colonna può contenere valori NULL e qual è il suo valore predefinito. In effetti, se non lo fai, MySQL assegna automaticamente i valori per questi attributi.

Il seguente blocco di codice è un esempio, dove il NOT NULL per impostazione predefinita, la colonna avrà il valore 100.

mysql> ALTER TABLE testalter_tbl 
   -> MODIFY j BIGINT NOT NULL DEFAULT 100;

Se non usi il comando precedente, MySQL riempirà i valori NULL in tutte le colonne.

Alterare (cambiare) il valore predefinito di una colonna

È possibile modificare un valore predefinito per qualsiasi colonna utilizzando il ALTER comando.

Prova il seguente esempio.

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field |  Type   | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|   c   | char(1) | YES  |     |   NULL  |       |
|   i   | int(11) | YES  |     |   1000  |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

È possibile rimuovere il vincolo predefinito da qualsiasi colonna utilizzando la clausola DROP insieme al ALTER comando.

mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field |  Type   | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|   c   | char(1) | YES  |     |   NULL  |       |
|   i   | int(11) | YES  |     |   NULL  |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Alterare (cambiare) un tipo di tabella

È possibile utilizzare un tipo di tabella utilizzando il TYPEclausola insieme al comando ALTER. Prova il seguente esempio per modificare il filetestalter_tbl per MYISAM tipo di tabella.

Per scoprire il tipo corrente di una tabella, utilizzare il SHOW TABLE STATUS dichiarazione.

mysql> ALTER TABLE testalter_tbl TYPE = MYISAM;
mysql>  SHOW TABLE STATUS LIKE 'testalter_tbl'\G
*************************** 1. row ****************
           Name: testalter_tbl
           Type: MyISAM
     Row_format: Fixed
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 25769803775
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2007-06-03 08:04:36
    Update_time: 2007-06-03 08:04:36
     Check_time: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

Rinominare (alterare) una tabella

Per rinominare una tabella, usa il RENAME opzione di ALTER TABLE dichiarazione.

Prova il seguente esempio per rinominare testalter_tbl per alter_tbl.

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

È possibile utilizzare il comando ALTER per creare e rilasciare il comando INDICE su un file MySQL. Discuteremo in dettaglio di questo comando nel prossimo capitolo.