English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Lorsque nous devons modifier le nom d'une table de données ou modifier un champ de table de données, nous devons utiliser la commande MySQL ALTER.
Avant de commencer ce chapitre de tutoriel, créons d'abord une table, nommée : testalter_tbl.
root@host# mysql -u root -p mot de passe ; Entrez le mot de passe :******* 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; +-------+---------+------+-----+---------+-------+ | Champ | Type | Null | Clé | Défaut | Extra | +-------+---------+------+-----+---------+-------+ | i | int(|11) | YES | | NULL | | | c | char(|1) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
La commande suivante utilise la commande ALTER et la clause DROP pour supprimer le champ i créé précédemment :
mysql> ALTER TABLE testalter_tbl DROP i;
Si il ne reste qu'un seul champ dans la table de données, il est impossible d'utiliser DROP pour supprimer le champ.
Dans MySQL, la clause ADD est utilisée pour ajouter des colonnes dans la table de données, comme dans l'exemple suivant, où le champ i est ajouté à la table testalter_tbl et le type de données est défini :
mysql> ALTER TABLE testalter_tbl ADD i INT;
Après l'exécution de la commande ci-dessus, le champ i sera automatiquement ajouté à la fin des champs de la table de données.
mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Champ | Type | Null | Clé | Défaut | Extra | +-------+---------+------+-----+---------+-------+ | c | char(|1) | YES | | NULL | | | i | int(|11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Si vous devez spécifier la position d'un champ ajouté, vous pouvez utiliser les mots-clés FIRST (positionné en tant que première colonne) et AFTER nom_du_champ (positionné après un champ donné).
Essayez l'instruction ALTER TABLE suivante, puis utilisez SHOW COLUMNS pour vérifier les changements dans la structure de la table après un succès d'exécution :
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;
Les mots-clés FIRST et AFTER peuvent être utilisés dans les clauses ADD et MODIFY, donc si vous devez réinitialiser l'ordre des champs dans la table de données, vous devez d'abord utiliser DROP pour supprimer le champ, puis utiliser ADD pour ajouter le champ et définir sa position.
Si vous devez modifier le type et le nom du champ, vous pouvez utiliser la clause MODIFY ou CHANGE dans l'instruction ALTER.
Par exemple, changez le type du champ c en CHAR(1) 改为 CHAR(10),可以执行以下命令:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
L'utilisation de la clause CHANGE entraîne une grande différence dans la syntaxe. Après le mot-clé CHANGE, suivi du nom du champ à modifier, puis spécifiez le nouveau nom de champ et le type. Essayez l'exemple suivant :
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Si vous souhaitez maintenant modifier le champ j de BIGINT en INT, la requête SQL suivante est utilisée :
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
Lorsque vous modifiez un champ, vous pouvez spécifier si vous souhaitez inclure une valeur ou définir une valeur par défaut.
Dans l'exemple suivant, spécifiez le champ j comme NOT NULL et la valeur par défaut est100 .
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
Si vous ne définissez pas de valeur par défaut, MySQL mettra automatiquement le champ par défaut à NULL.
Vous pouvez utiliser ALTER pour modifier la valeur par défaut du champ, essayons l'exemple suivant :
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Champ | Type | Null | Clé | Défaut | Extra | +-------+---------+------+-----+---------+-------+ | c | char(|1) | YES | | NULL | | | i | int(|11) | YES | | 1000 | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Vous pouvez également utiliser la commande ALTER avec la clause DROP pour supprimer la valeur par défaut du champ, comme dans l'exemple suivant :
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Champ | Type | Null | Clé | Défaut | Extra | +-------+---------+------+-----+---------+-------+ | c | char(|1) | YES | | NULL | | | i | int(|11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec) Changement de type de table :
Pour modifier le type de table des données, vous pouvez utiliser la commande ALTER avec la clause TYPE. Essayons l'exemple suivant, nous allons modifier le type de la table testalter_tbl en MYISAM :
Attention :Vous pouvez utiliser l'expression SHOW TABLE STATUS pour vérifier le type de table des données.
mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM; mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G *************************** 1. row **************** Nom : testalter_tbl Type : MyISAM Format de ligne : Fixed Nombre de lignes : 0 Longueur moyenne de la ligne : 0 Longueur des données : 0 Longueur maximale des données : 25769803775 Longueur de l'index : 1024 Data_free : 0 Auto_increment : NULL Heure de création : 2007-06-03 08:04:36 Heure de mise à jour : 2007-06-03 08:04:36 Heure de vérification : NULL Options de création : Commentaire : 1 row in set (0.00 sec)
Si vous devez modifier le nom d'une table de données, vous pouvez utiliser la clause RENAME dans l'instruction ALTER TABLE pour le faire.
Essayez l'exemple suivant pour renommer la table de données testalter_tbl en alter_tbl :
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
La commande ALTER peut également être utilisée pour créer et supprimer des index de tables de données MySQL, cette fonction sera présentée dans les prochaines sections.