tabla - mover una columna en mysql
¿Cómo mover columnas en una tabla MySQL? (4)
Cambiar la posición de la columna:
ALTER TABLE Employees
CHANGE empName empName VARCHAR(50) NOT NULL AFTER department;
Si necesita moverlo a la primera posición, debe usar el término FIRST al final de la consulta ALTER TABLE CHANGE [COLUMN]:
ALTER TABLE UserOrder
CHANGE order_id order_id INT(11) NOT NULL FIRST;
Actualmente tengo la siguiente tabla de MySQL: Employees (empID, empName, department);
Quiero cambiar la tabla a lo siguiente: Employees (empID, department, empName);
¿Cómo se puede hacer esto usando declaraciones ALTER
?
Nota: quiero cambiar solo las posiciones de las columnas.
Si empName es una columna VARCHAR (50):
ALTER TABLE Employees MODIFY COLUMN empName VARCHAR(50) AFTER department;
EDITAR
Por los comentarios, también puedes hacer esto:
ALTER TABLE Employees CHANGE COLUMN empName empName VARCHAR(50) AFTER department;
Tenga en cuenta que la repetición de empName
es deliberada. Tienes que decirle a MySQL que quieres mantener el mismo nombre de columna.
Debe tener en cuenta que ambas versiones de sintaxis son específicas de MySQL. No funcionarán, por ejemplo, en PostgreSQL u otros muchos DBMS.
Otra edición: como señaló @Luis Rossi en un comentario, necesita especificar completamente la definición de columna alterada justo antes del modificador AFTER
. Los ejemplos anteriores solo tienen VARCHAR(50)
, pero si necesita otras características (como NOT NULL
o un valor predeterminado), debe incluirlas también. Consulte los documentos en ALTER TABLE
para obtener más información.
Tuve que ejecutar esto para una columna presentada en las últimas etapas de un producto, en más de 10 tablas. Así que escribí este guión rápido y desordenado para generar el comando alter para todas las tablas ''relevantes''.
SELECT CONCAT("ALTER TABLE `",TABLE_NAME,"` CHANGE COLUMN `",COLUMN_NAME,"` `",COLUMN_NAME,"` BIGINT AFTER `id`;")
FROM information_schema.COLUMNS c
WHERE TABLE_SCHEMA = ''<YOUR SCHEMA NAME>''
AND COLUMN_NAME = ''<COLUMN TO MOVE>''
AND TABLE_TYPE = ''BASE TABLE''
AND ''<COLUMN TO MOVE AFTER>''
IN (SELECT COLUMN_NAME
FROM information_schema.COLUMNS c2
WHERE c.TABLE_NAME = c2.TABLE_NAME);
phpMyAdmin proporciona una GUI para esto dentro de la vista de estructura de una tabla. Seleccione para seleccionar la columna que desea mover y haga clic en la acción de cambio en la parte inferior de la lista de columnas. A continuación, puede cambiar todas las propiedades de la columna y encontrará la función ''mover columna'' en el extremo derecho de la pantalla.
Por supuesto, esto es solo generar las consultas en la respuesta perfecta, pero los fanáticos de la GUI pueden apreciar la alternativa.
mi versión phpMyAdmin es 4.1.7