tipos - modificar un registro en mysql
¿Cómo cambio el tipo de datos para una columna en MySQL? (8)
Para cambiar el tipo de datos de columna hay métodos de cambio y métodos 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 usa el método de cambio.
alter table student_info change roll_no identity_no varchar(255);
Quiero cambiar el tipo de datos de varias columnas de float a int. ¿Cuál es la forma más sencilla de hacer esto?
Aún no hay datos de los que preocuparse.
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 solucionarse fácilmente con otro if
-parameter to concat
. Dejaré que el lector lo implemente si es necesario.
También puedes usar esto:
ALTER TABLE [tablename] CHANGE [columnName] [columnName] DECIMAL (10,2)
Usas el método alter table ... change ...
, 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)
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 la cantidad de columnas que desee modificar, puede ser mejor generar un script o usar algún tipo de GUI del cliente mysql
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
También puede establecer un valor predeterminado para la columna, simplemente agregue la palabra clave DEFAULT seguida del valor.
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
Esto también está funcionando para MariaDB (versión probada 10.2)
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
Ex:
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
alter table table_name modify column_name int(5)