Juste pour rendre cela explicite, les réponses ci-dessous (en utilisant ALTER TABLE) fonctionneront, en fait, même si la colonne contient déjà des données. Cependant, la conversion d'une colonne flottante en une colonne entière entraînera l'arrondissement de toutes les valeurs non entières à l'entier le plus proche.
Rappel convivial - La valeur par défaut pour les colonnes est NULLABLE, donc si vous avez une colonne NOT NULL, n'oubliez pas d'utiliser "MODIFY nom_colonne INTEGER NOT NULL" sinon vous changerez votre colonne de NOT NULL à NULL.
Despertar
3
La modification de la table supprimera-t-elle les données de la table ou échouera-t-elle si quelque chose ne va pas avec le nouveau type de colonne?
EndermanAPM
1
ALTER TABLE nom de table MODIFY nom de colonne INTEGER unsigned; <- si vous souhaitez que la nouvelle colonne ne soit pas signée. C'était mon cas.
mircealungu
Je pense que l'avertissement @Despertars pourrait également être pertinent pour conserver les spécifications de CHARSET ou COLLATE.
Si vous souhaitez remplacer toutes les colonnes d'un certain type par un autre type, vous pouvez générer des requêtes à l'aide d'une requête comme celle-ci:
!! Ne conserve pas de contraintes uniques, mais devrait être facilement corrigé avec un autre ifparamètre concat. Je laisserai au lecteur le soin de mettre en œuvre cela si nécessaire ..
ALTER TABLE
) fonctionneront, en fait, même si la colonne contient déjà des données. Cependant, la conversion d'une colonne flottante en une colonne entière entraînera l'arrondissement de toutes les valeurs non entières à l'entier le plus proche.Réponses:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
Cela changera le type de données de la colonne donnée
Selon le nombre de colonnes que vous souhaitez modifier, il peut être préférable de générer un script ou d'utiliser une sorte de GUI client mysql
la source
la source
Vous pouvez également utiliser ceci:
la source
Si vous souhaitez remplacer toutes les colonnes d'un certain type par un autre type, vous pouvez générer des requêtes à l'aide d'une requête comme celle-ci:
Par exemple, si vous souhaitez changer les colonnes de
tinyint(4)
enbit(1)
, exécutez-le comme ceci:et obtenez une sortie comme celle-ci:
!! Ne conserve pas de contraintes uniques, mais devrait être facilement corrigé avec un autre
if
paramètreconcat
. Je laisserai au lecteur le soin de mettre en œuvre cela si nécessaire ..la source
Ex:
la source
Vous utilisez la
alter table ... change ...
méthode, par exemple:la source
la source
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
Vous pouvez également définir une valeur par défaut pour la colonne, ajoutez simplement le mot clé DEFAULT suivi de la valeur.
Cela fonctionne également pour MariaDB (version testée 10.2)
la source
Si vous souhaitez modifier les détails de la colonne ajouter un commentaire, utilisez ceci
la source