Actualmente estoy teniendo la siguiente tabla MySQL: Employees (empID, empName, department);
Quiero cambiar la tabla a la siguiente: Employees (empID, department, empName);
¿Cómo se puede hacer esto usando ALTER
declaraciones?
Nota: Quiero cambiar solo las posiciones de columna.
SELECT *
declaración. (De acuerdo, si el orden de los valores es importante, uno debería enumerarlos explícitamente en la declaración, pero tal vez OP no tiene control total aquí.)SELECT
declaraciónAFTER column
se puede usar conALTER TABLE ADD column
. (para la próxima vez que agregue algunos campos.)Respuestas:
Si empName es una columna VARCHAR (50):
EDITAR
Según los comentarios, también puedes hacer esto:
Tenga en cuenta que la repetición de
empName
es deliberada. Tiene que decirle a MySQL que desea 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 o en muchos otros DBMS.
Otra edición: como señaló @Luis Rossi en un comentario, debe especificar completamente la definición de columna alterada justo antes del
AFTER
modificador. Los ejemplos anteriores solo tienenVARCHAR(50)
, pero si necesita otras características (comoNOT NULL
o un valor predeterminado), también debe incluirlas. Consulte los documentos enALTER TABLE
para más información.fuente
COLUMN
palabra clave es opcional en lasALTER TABLE
declaraciones. Prefiero usarlo porque creo que hace que la declaración sea más legible.NOT NULL DEFAULT 1
, esto se hace justo después del tipo de columna en el ejemploVARCHAR(50)
Cambiar posición de columna:
Si necesita moverlo a la primera posición, debe usar el término PRIMERO al final de la consulta ALTER TABLE CHANGE [COLUMN]:
fuente
phpMyAdmin proporciona una GUI para esto dentro de la vista de estructura de una tabla. Marque 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. Luego puede cambiar todas las propiedades de la columna y encontrará la función 'mover columna' en el extremo derecho de la pantalla.
Por supuesto, todo esto es solo construir las consultas en la respuesta superior perfectamente buena, pero los fanáticos de la GUI pueden apreciar la alternativa.
mi versión de phpMyAdmin es 4.1.7
fuente
Tuve que ejecutar esto para una columna introducida en las etapas posteriores de un producto, en más de 10 tablas. Entonces escribí este script rápido y desordenado para generar el comando alter para todas las tablas 'relevantes'.
fuente