Je veux changer le type de données de plusieurs colonnes de float à int. Quel est le moyen le plus simple de faire cela?
Il n'y a pas de données à s'inquiéter pour le moment.
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 d’interface graphique pour le client mysql.
alter table table_name modify column_name int(5)
Vous pouvez également utiliser ceci:
ALTER TABLE [tablename] CHANGE [columnName] [columnName] DECIMAL (10,2)
Si vous voulez changer toutes les colonnes d'un certain type en un autre type, vous pouvez générer des requêtes en utilisant 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 modifier les colonnes de tinyint(4)
en bit(1)
, exécutez-le comme suit:
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 un résultat comme celui-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 les contraintes uniques, mais devrait être facilement corrigé avec un autre paramètre if
- à concat
. Je laisserai au lecteur le soin de le mettre en œuvre si nécessaire.
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
Ex:
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
Vous utilisez la méthode alter table ... change ...
, 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 la colonne, il existe une méthode change et une méthode modify
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 en ajoutant simplement le mot clé DEFAULT suivi de la valeur.
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
Cela fonctionne aussi pour MariaDB (version testée 10.2)
Si vous souhaitez modifier les détails de la colonne ajouter un commentaire, utilisez cette
ALTER TABLE [table_name] MODIFY [column_name] [new data type] DEFAULT [VALUE] COMMENT '[column comment]'