Lorsque vous devez modifier le nom de la table de données ou modifier les champs de la table de données , vous devez utiliser la commande MySQL ALTER TABLE .
Supprimer, ajouter ou modifier des champs de table
Supprimer l'exemple DROP
# 使用ALTER命令及 DROP 子句来删除表的i字段,如果数据表中只剩余一个字段则无法使用DROP来删除字段。
mysql> ALTER TABLE testalter_tbl DROP i;
Ajouter un exemple AJOUTER
# 使用 ADD 子句来向数据表中添加i字段,并定义数据类型,执行下面命令后,i 字段会自动添加到数据表字段的末尾。
mysql> ALTER TABLE testalter_tbl ADD i INT;
Si vous avez besoin de spécifier l'emplacement du nouveau champ, vous pouvez utiliser le mot-clé FIRST fourni par MySQL (définir la première colonne), AFTER nom du champ (défini après un champ).
# 将i字段插入到第一列
ALTER TABLE testalter_tbl ADD i INT FIRST;
# 将i字段插入到c字段之后
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. Par conséquent, si vous souhaitez réinitialiser la position d'un champ de table de données, vous devez utiliser DROP pour supprimer le champ, puis ADD pour ajouter le champ et définir la position.
Modifier exemple MODIFY ou CHANGE
Si vous devez modifier le type de champ et le nom , vous pouvez utiliser la clause MODIFY ou CHANGE dans la commande ALTER.
# 把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
Avec la clause CHANGE, la syntaxe est très différente. Immédiatement après le mot-clé CHANGE se trouve le nom du champ que vous souhaitez modifier, puis spécifiez le nouveau nom et type de champ.
# CHANGE 关键字之后,i为修改后字段,j为修改前字段,BIGINT为修改字段后的类型。
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Modifier et supprimer les valeurs par défaut des champs
Modifier la valeur par défaut SET
# 以下命令将字段默认值修改为1000
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
Supprimer la valeur par défaut de DROP
# 删除字段i的默认值,没有默认值了后用NULL填充
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
Effet de ALTER TABLE sur les valeurs nulles et par défaut
Lors de la modification d'un champ, vous pouvez spécifier s'il faut inclure une valeur ou définir une valeur par défaut. Si vous ne définissez pas de valeur par défaut, MySQL définira automatiquement le champ sur NULL par défaut.
# 以下实例,指定字段 j 为 NOT NULL 且默认值为100 。
mysql> ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;
Modifier le nom de la table de données et le moteur de stockage
Modifier le nom de la table RENAME TO
# 以下实例将数据表 testalter_tbl 重命名为 alter_tbl:
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
Modifier le moteur de stockage de la table de données
L'exemple suivant modifie le type de la table testalter_tbl en InnoDB :
# 修改testalter_tbl表的引擎为InnoDB:数据量大会修改较慢,且修改时影响查询等性能
mysql> ALTER TABLE testalter_tbl ENGINE = InnoDB;
mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G
DÉPOSER LA CLÉ ÉTRANGÈRE
# 对于数据库中定义的外键,如果不再需要,可以将其删除。
# 外键一旦删除,就会解除主表和从表间的关联关系,MySQL 中删除外键的语法格式如下。
alter table tableName drop foreign key keyName;