Je veux changer le type de données de plusieurs colonnes de float à int. Quelle est la manière la plus simple de procéder?
Il n'y a pas encore de données à craindre.
Je veux changer le type de données de plusieurs colonnes de float à int. Quelle est la manière la plus simple de procéder?
Il n'y a pas encore de données à craindre.
Réponses:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
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
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:
select distinct concat('alter table ',
table_name,
' modify ',
column_name,
' <new datatype> ',
if(is_nullable = 'NO', ' NOT ', ''),
' NULL;')
from information_schema.columns
where table_schema = '<your database>'
and column_type = '<old datatype>';
Par exemple, si vous souhaitez changer les colonnes de tinyint(4)
en bit(1)
, exécutez-le comme ceci:
select distinct concat('alter table ',
table_name,
' modify ',
column_name,
' bit(1) ',
if(is_nullable = 'NO', ' NOT ', ''),
' NULL;')
from information_schema.columns
where table_schema = 'MyDatabase'
and column_type = 'tinyint(4)';
et obtenez une sortie comme celle-ci:
alter table table1 modify finished bit(1) NOT NULL;
alter table table2 modify canItBeTrue bit(1) NOT NULL;
alter table table3 modify canBeNull bit(1) NULL;
!! Ne conserve pas de contraintes uniques, mais devrait être facilement corrigé avec un autre if
paramètre concat
. Je laisserai au lecteur le soin de mettre en œuvre cela si nécessaire ..
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
Ex:
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
Vous utilisez la alter table ... change ...
méthode, par exemple:
mysql> create table yar (id int);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into yar values(5);
Query OK, 1 row affected (0.01 sec)
mysql> alter table yar change id id varchar(255);
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc yar;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
1 row in set (0.00 sec)
Pour changer le type de données de colonne, il existe une méthode de changement et une méthode de modification
ALTER TABLE student_info CHANGE roll_no roll_no VARCHAR(255);
ALTER TABLE student_info MODIFY roll_no VARCHAR(255);
Pour changer le nom du champ, utilisez également la méthode change
ALTER TABLE student_info CHANGE roll_no identity_no VARCHAR(255);
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.
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
Cela fonctionne également pour MariaDB (version testée 10.2)
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.