Commande MySQL ALTER


Commande MySQL ALTER

Lorsque nous devons modifier le nom de la table de données ou modifier les champs de la table de données, nous devons utiliser Ordre MySQL ALTER.

Avant de commencer ce tutoriel, créons d'abord une table nommée : testalter_tbl.

root@host# mysql -u root -p password;
Enter password:*******
mysql> use php;
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)
Supprimer, ajouter ou modifier des champs de table

La commande suivante utilise la commande ALTER et la clause DROP pour supprimer Le champ i de la table créée ci-dessus :

mysql> ALTER TABLE testalter_tbl  DROP i;
S'il ne reste qu'un seul champ dans la table de données, DROP ne peut pas être utilisé pour supprimer le champ.

La clause ADD est utilisée dans MySQL pour ajouter des colonnes à la table de données. L'exemple suivant ajoute le champ i à la table testalter_tbl et définit le type de données :

mysql> ALTER TABLE testalter_tbl ADD i INT;
exécute ce qui précède. Après la commande, le champ i est automatiquement ajouté à la fin des champs de la table de données.
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)
Si vous devez spécifier l'emplacement du nouveau champ, vous pouvez utiliser le mot-clé FIRST (défini dans la première colonne) fourni par MySQL, APRÈS le nom du champ (défini dans un certain champ après).

Essayez l'instruction ALTER TABLE suivante. Après une exécution réussie, utilisez SHOW COLUMNS pour afficher les modifications dans la structure de la table :

Les mots-clés
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;
FIRST et AFTER ne sont utilisés que dans le Clause ADD Ainsi, si vous souhaitez réinitialiser la position d'un champ de table de données, vous devez d'abord utiliser DROP pour supprimer le champ, puis utiliser ADD pour ajouter le champ et définir la position.

Modifier le type et le nom du champ

Si vous devez modifier le type et le nom du champ, vous pouvez utiliser MODIFY ou CHANGE dans le Clause de commande ALTER.

Par exemple, pour changer le type de champ c de CHAR(1) à CHAR(10), vous pouvez exécuter la commande suivante :

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
utilise la clause CHANGE, la la syntaxe est très différente. Après le mot-clé CHANGE, suivez le nom du champ que vous souhaitez modifier, puis spécifiez le nouveau nom et le nouveau type de champ. Essayez l'exemple suivant :
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
mysql> ALTER TABLE testalter_tbl CHANGE j j INT

Impact d'ALTER TABLE sur les valeurs nulles et les valeurs par défaut

Lorsque vous modifiez un champ, vous pouvez spécifier si vous souhaitez l'inclure ou si vous souhaitez définir une valeur par défaut.

Dans l'exemple suivant, le champ j spécifié n'est PAS NULL et la valeur par défaut est 100.

mysql> ALTER TABLE testalter_tbl
   -> MODIFY j BIGINT NOT NULL DEFAULT 100;
Si vous ne définissez pas de valeur par défaut, MySQL définira automatiquement le champ sur NULL par défaut.

Modifier la valeur par défaut du champ

Vous pouvez utiliser ALTER pour modifier la valeur par défaut du champ Essayez l'exemple suivant :

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)
Vous pouvez également utiliser la commande ALTER et la clause DROP pour supprimer la valeur par défaut d'un champ, comme le montre l'exemple suivant :
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)
Changing a Table Type:
Pour modifier la table de données tapez, vous pouvez utiliser la commande ALTER et la clause TYPE pour terminer. Essayez l'exemple suivant, nous changeons le type de table testalter_tbl en MYISAM :

Remarque : Vous pouvez utiliser l'instruction SHOW TABLE STATUS pour afficher le type de table de données.

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)
Modifier le nom de la table

Si vous devez modifier le nom de la table de données, vous pouvez utiliser RENAME dans la clause de l'instruction ALTER TABLE à réaliser.

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é Pour créer et supprimer des index de tables de données MySQL, nous présenterons cette fonction dans le chapitre suivant.

Tutoriels vidéo associés recommandés :