Logo de phpMyAdmin | Cortesía de Wikipedia
La combinación PHP y MySQL ha sido muy exitosa pues cuando adquirimos un hospedaje en Internet suele venir con el administrador cPanel para administrar el sitio web completo y phpMyAdmin para administrar las bases de datos (aunque podría venir con otros sistemas de administración preinstalados).
Esto no es algo nuevo, llevo unos 15 años creando sitios web en los que suele venir cPanel para administrar el sitio web completo y phpMyAdmin para las bases de datos como ya mencioné hace un momento. Me parece que phpMyAdmin es un sistema muy sencillo de usar pero una gran carencia es que no tiene un método para reordenar las columnas de una tabla de manera visual, no habiendo más remedio que recurrir a SQL para realizar esta tarea.
Debemos recurrir a la instrucción ALTER TABLE para cambiar el orden de las columnas tal como el siguiente ejemplo:
ALTER table `nombre_tabla`
MODIFY COLUMN `nombre_columna` tipo_datos
AFTER `otra_columna`
Sin embargo, por alguna razón en mi servidor local (XAMPP) esto no da ningún resultado, no obtengo ningún mensaje de error pero tampoco sucede nada (de las cosas que más me exasperan), así que propongo a continuación otra solución.
Tengo una tabla a la que deseo cambiar el orden de las columnas, mi tabla tiene la siguiente estructura:
Sin embargo yo deseo que su estructura sea ID, NAME, TRASH, LASTMODIF_LOCALDATE, LASTMODIF_USERNAME Y LASTMODIF_DATE, es decir las dos primeras columnas están invertidas. Como comenté anteriormente phpMyAdmin no tiene un sistema para arrastrar las columnas y fijar el nuevo orden, sin embargo no usaré ALTER TABLE. En lugar de ello en nuestro editor de SQL dentro de phpMyAdmin escribiremos la siguiente instrucción:
CREATE TABLE sch_expenses2 AS
SELECT NAME, ID, TRASH, LASTMODIF_LOCALDATE, LASTMODIF_USERNAME, LASTMODIF_DATE
FROM sch_expenses
Donde sch_expenses2 es la nueva tabla que deseamos crear tomando como base los datos de la tabla sch_expenses, esto creará entonces una nueva tabla llamada "sch_expenses2", pero los datos vendrán de la tabla "sch_expenses". Sin embargo si notamos estamos usando la instrucción SELECT para traer todos los registros desde la tabla sch_expenses donde estaremos fijando el orden de las columnas. Ahora solo resta ejecutar la consulta y obtendremos una nueva tabla con la siguiente estructura:
El único detalle es que no se copian los índices de nuestra nueva tabla, el tamaño de los campos es el mismo, pero no así con los índices teniendo que crearlos de nuevo. Ahora solo resta borrar la tabla original, reconstruir los índices que necesitemos y listo.