Cómo reordenar los campos de una tabla MySQL


La estructura de datos de cualquier aplicación es la parte más difícil de cambiar. Sin embargo, puesto que las nuevas necesidades surgen continuamente, añadir nuevas columnas a una base de datos MySQL existente es una tarea habitual.


Pero, ¿cómo reordenar las columnas de una tabla MySQL una vez que dichas nuevas columnas ya han sido creadas y añadidas a una tabla existente? Recolocar las columnas es una práctica recomendable para mantener visualmente juntos aquellos campos de la tabla MySQL que se encuentren fuertemente relacionados.


Normalmente prefiero realizar todas las tareas de gestión de bases de datos MySQL utilizando herramientas tales como phpMyAdmin. Sin embargo, no he encontrado ninguna opción de phpMyAdmin que permita cambiar el orden de las columnas existentes dentro de la estructura de la tabla.


Por suerte, sólo hay que ejecutar una instrucción MySQL muy fácil para especificar un nuevo orden de columnas:

ALTER table `nombre_tabla`
       MODIFY COLUMN `nombre_columna` tipo_datos
       AFTER `otra_columna`

Sólo hay que reemplazar los campos siguientes por los datos reales de la tabla MySQL reordenada:

  • nombre_tabla: el nombre de la tabla MySQL cuyo orden de campos modificar.

  • nombre_columna: el nombre de la columna de la tabla MySQL que se desea recolocar.

  • tipo_datos: el tipo de datos MySQL de la columna movida, como int, varchar(longitud), text, etc.

  • otra_columna: el nombre de la columna que estará justo antes de la nueva posición de la columna reordenada.


Ejemplo de cómo reordenar columnas en una tabla MySQL


He aquí un ejemplo con una consulta MySQL real para cambiar el orden de las columnas de una tabla. Supongamos que se desea mover la columna llamada "user_password" para que se coloque justo detrás de la columna llamada "user_name" y mantener así agrupadas estas columnas estrechamente relacionadas:


reordenar campos en mysql

ALTER table `registered_users`
       MODIFY COLUMN `user_password` varchar(25)
       AFTER `user_name`

Esto reordenará las columnas en la estructura actual de la tabla MySQL. No obstante, no alterará el orden de las filas (es decir, de los registros de datos actualmente almacenados en la tabla). Así pues, el orden de los datos contenidos en la base de datos no cambiará.


Es útil reordenar columnas de una tabla MySQL para mantener campos relacionados visualmente cerca y agrupados lógicamente. Sin embargo, recolocar la posición de las columnas en la estructura de la tabla apenas modificará las prestaciones o la velocidad de búsqueda en la base de datos MySQL.


Por otra parte, reordenar los datos almacenados (esto es, cambiar el orden de las filas o registros guardados en una tabla) es una tarea completamente distinta, la cual sí que puede optimizar (o impactar negativamente) en el rendimiento de las búsquedas en MySQL.

5 comments:

Adeptos dijo...

Vaya muchas gracias por como hacer esto desde Mysql.

Un abrazo
Toni

Unknown dijo...

Que tal, un saludo, y como se podrian reordenar las tablas?

ESV dijo...

Pues creo que reordenar las tablas dentro de una base de datos en phpMyAdmin no es posible. Pero esto es menos preocupante, porque básicamente porque el orden de las tablas no influye en la sintaxis de ninguna consulta a la base de datos MySQL. Y en cualquier caso, suele ser por propósitos de organización, ya que más vale utilizar una sintaxis que siga siendo válida si el número u orden de los campos de una tabla cambiasen en el futuro.

Unknown dijo...

se podrian tambn reordenar de la misma forma filas de una tabla

ESV dijo...

El método anterior permite reordenar las columnas de una tabla, pero no las filas. Reordenar filas sí puede tener implicaciones en el rendimiento de las consultas a la base de datos.

La sintaxis para reordenar filas es ligeramente distinta, de la forma:

ALTER TABLE nombreTabla ORDER BY nombreColumna ASC;