English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
当我们需要修改数据表名或者修改数据表字段时,就需要使用到 MySQL ALTER 命令。
在开始本章教程之前,让我们先创建一张表,表名为:testalter_tbl。
root@host# mysql -u root -p password; Enter password:******* mysql> use w3codebox; 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)
以下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段:
mysql> ALTER TABLE testalter_tbl DROP i;
Se nella tabella rimane solo un campo, non è possibile eliminare il campo con DROP.
In MySQL, l'istruzione ADD viene usata per aggiungere colonne alla tabella, come nell'esempio seguente, viene aggiunto il campo i alla tabella testalter_tbl e viene definito il tipo di dati:
mysql> ALTER TABLE testalter_tbl ADD i INT;
Dopo aver eseguito il comando sopra, il campo i verrà aggiunto automaticamente alla fine dei campi della tabella.
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)
Se devi specificare la posizione del nuovo campo, puoi usare i termini chiave FIRST (imposta come prima colonna) e AFTER nome_campo (imposta dopo un campo specifico).
Prova l'istruzione ALTER TABLE seguente, dopo aver eseguito con successo, usa SHOW COLUMNS per visualizzare le modifiche alla struttura della tabella:
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;
Le parole chiave FIRST e AFTER possono essere usate nelle clausole ADD e MODIFY, quindi se vuoi riorganizzare la posizione dei campi nella tabella, devi prima eliminare il campo esistente con DROP e poi aggiungere il nuovo campo con ADD e impostare la posizione.
Se devi modificare il tipo e il nome del campo, puoi usare la clausola MODIFY o CHANGE nell'istruzione ALTER.
Ad esempio, per modificare il tipo del campo c da CHAR(1) a CHAR(10), esegui il comando seguente:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
L'uso della clausola CHANGE comporta una grande differenza nella sintassi. Dopo la parola chiave CHANGE, seguita dal nome del campo da modificare, quindi specifica il nuovo nome del campo e il tipo.
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Se vuoi modificare il campo j da BIGINT a INT, l'istruzione SQL è la seguente:
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
Quando modifichi un campo, puoi specificare se includere il valore o impostare un valore predefinito.
Ecco un esempio in cui viene specificato che il campo j deve essere NOT NULL e ha un valore predefinito di 100 .
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
Se non imposti un valore predefinito, MySQL imposterà automaticamente il campo come NULL.
Puoi utilizzare ALTER per modificare il valore predefinito del campo, ecco un 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)
Puoi anche utilizzare il comando ALTER con la clausola DROP per rimuovere il valore predefinito del campo, come nell'esempio seguente:
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) Modificare il tipo di tabella:
Per modificare il tipo di tabella, puoi utilizzare il comando ALTER con la clausola TYPE. Ecco un esempio: modificheremo il tipo della tabella testalter_tbl in MYISAM:
Attenzione:Puoi utilizzare la frase SHOW TABLE STATUS per visualizzare il tipo di tabella.
mysql> ALTER TABLE testalter_tbl ENGINE = 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 Opzioni di creazione: Commento: 1 row in set (0.00 sec)
Se necessario modificare il nome della tabella dei dati, è possibile utilizzare la clause RENAME dell'istruzione ALTER TABLE per farlo.
Prova l'esempio seguente per rinominare la tabella di dati testalter_tbl in alter_tbl:
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
Il comando ALTER può anche essere utilizzato per creare e eliminare gli indici delle tabelle MySQL, questa funzione sarà introdotta nei prossimi capitoli.