MySQL - Commande ALTER

Le MySQL ALTER La commande est très utile lorsque vous souhaitez modifier un nom de votre table, n'importe quel champ de table ou si vous souhaitez ajouter ou supprimer une colonne existante dans une table.

Commençons par la création d'une table appelée testalter_tbl.

[email protected]# 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)

Déposer, ajouter ou repositionner une colonne

Si vous souhaitez supprimer une colonne existante i de la table MySQL ci-dessus, vous utiliserez le DROP clause avec la ALTER commande comme indiqué ci-dessous -

mysql> ALTER TABLE testalter_tbl  DROP i;

UNE DROP ne fonctionnera pas si la colonne est la seule qui reste dans le tableau.

Pour ajouter une colonne, utilisez ADD et spécifiez la définition de colonne. L'instruction suivante restaure lei colonne au testalter_tbl -

mysql> ALTER TABLE testalter_tbl ADD i INT;

Après avoir émis cette instruction, testalter contiendra les deux mêmes colonnes que lors de la création initiale de la table, mais n'aura pas la même structure. En effet, de nouvelles colonnes sont ajoutées par défaut à la fin de la table. Donc même sii était à l'origine la première colonne de mytbl, maintenant c'est la dernière.

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)

Pour indiquer que vous voulez une colonne à une position spécifique dans le tableau, utilisez FIRST pour en faire la première colonne ou AFTER col_name pour indiquer que la nouvelle colonne doit être placée après le col_name.

Essayez ce qui suit ALTER TABLE instructions, utilisation SHOW COLUMNS après chacun pour voir quel effet chacun a -

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 spécificateurs FIRST et AFTER fonctionnent uniquement avec la clause ADD. Cela signifie que si vous souhaitez repositionner une colonne existante dans une table, vous devez d'abordDROP et puis ADD il à la nouvelle position.

Modifier (changer) une définition de colonne ou un nom

Pour modifier la définition d'une colonne, utilisez MODIFY ou CHANGE clause avec la commande ALTER.

Par exemple, pour changer de colonne c de CHAR (1) à CHAR (10), vous pouvez utiliser la commande suivante -

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

Avec CHANGE, la syntaxe est un peu différente. Après le mot-clé CHANGE, vous nommez la colonne que vous souhaitez modifier, puis spécifiez la nouvelle définition, qui inclut le nouveau nom.

Essayez l'exemple suivant -

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;

Si vous utilisez maintenant CHANGE pour convertir j de BIGINT retour à INT sans changer le nom de la colonne, l'instruction sera comme indiqué ci-dessous -

mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

The Effect of ALTER TABLE on Null and Default Value Attributes- Lorsque vous MODIFIEZ ou CHANGER une colonne, vous pouvez également spécifier si la colonne peut contenir des valeurs NULL et quelle est sa valeur par défaut. En fait, si vous ne le faites pas, MySQL attribue automatiquement des valeurs à ces attributs.

Le bloc de code suivant est un exemple, où le NOT NULL la colonne aura la valeur 100 par défaut.

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

Si vous n'utilisez pas la commande ci-dessus, MySQL remplira les valeurs NULL dans toutes les colonnes.

Modification (modification) de la valeur par défaut d'une colonne

Vous pouvez modifier une valeur par défaut pour n'importe quelle colonne à l'aide de la ALTER commander.

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 supprimer la contrainte par défaut de n'importe quelle colonne en utilisant la clause DROP avec le ALTER commander.

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)

Modifier (changer) un type de tableau

Vous pouvez utiliser un type de table en utilisant le TYPEclause avec la commande ALTER. Essayez l'exemple suivant pour modifier letestalter_tbl à MYISAM type de table.

Pour connaître le type actuel d'une table, utilisez le SHOW TABLE STATUS déclaration.

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)

Renommer (modifier) ​​une table

Pour renommer une table, utilisez le RENAME option de la ALTER TABLE déclaration.

Essayez l'exemple suivant pour renommer testalter_tbl à alter_tbl.

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

Vous pouvez utiliser la commande ALTER pour créer et déposer la commande INDEX sur un fichier MySQL. Nous discuterons en détail de cette commande dans le chapitre suivant.