Quiero cambiar el tipo de datos de varias columnas de flotante a int. ¿Cuál es la forma más sencilla de hacer esto?
No hay datos de los que preocuparse, todavía.
Quiero cambiar el tipo de datos de varias columnas de flotante a int. ¿Cuál es la forma más sencilla de hacer esto?
No hay datos de los que preocuparse, todavía.
Respuestas:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
Esto cambiará el tipo de datos de la columna dada
Dependiendo de cuántas columnas desee modificar, sería mejor generar un script o utilizar algún tipo de GUI de cliente mysql
Si desea cambiar todas las columnas de un determinado tipo a otro tipo, puede generar consultas utilizando una consulta como esta:
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>';
Por ejemplo, si desea cambiar las columnas de tinyint(4)
a bit(1)
, ejecútelo así:
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)';
y obtener una salida como esta:
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;
!! No mantiene restricciones únicas, pero debe arreglarse fácilmente con otro if
parámetro para concat
. Dejaré que el lector implemente eso si es necesario.
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
Ej:
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
Utiliza el alter table ... change ...
método, por ejemplo:
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)
Para cambiar el tipo de datos de la columna, hay un método de cambio y un método de modificación
ALTER TABLE student_info CHANGE roll_no roll_no VARCHAR(255);
ALTER TABLE student_info MODIFY roll_no VARCHAR(255);
Para cambiar el nombre del campo también use el método de cambio
ALTER TABLE student_info CHANGE roll_no identity_no VARCHAR(255);
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
También puede establecer un valor predeterminado para la columna, solo agregue la palabra clave DEFAULT seguida del valor.
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
Esto también funciona para MariaDB (versión probada 10.2)
ALTER TABLE
) funcionarán, de hecho, incluso si la columna ya contiene datos. Sin embargo, la conversión de una columna flotante en una columna entera hará que los valores no enteros se redondeen al entero más cercano.