Mostrando entradas con la etiqueta bases de datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta bases de datos. Mostrar todas las entradas

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.

Cómo establecer auto incremento en SQL con phpMyAdmin


Una práctica habitual en la creación de bases de datos es establecer claves primarias (o Primary Keys, PKs) con la opción de auto incremento. De esta manera, no hay que preocuparse por especificar un valor numérico único de clave primaria cada vez que se inserte una nueva fila en la tabla.


Pese a que phpMyAdmin es una herramienta de gestión de bases de datos muy útil y fácil de usar, muchas verces oigo la pregunta de dónde especificar el auto incremento en phpMyAdmin. He aquí la solución:


En las últimas versiones de phpMyAdmin hay una nueva casilla llamada A_I. No hay más que marcar esta opción al crear o editar la columna de la tabla que contendrá la clave primaria, y ese campo numérico incrementará automáticamente su valor cada vez que se inserte una nueva fila.


Auto incremento en phpMyAdmin

Para comprobar que la propiedad de auto incremento se configuró correctamente, no hay más que mirar en la columna EXTRA dentro de las propiedades de la columna de la clave primaria de la tabla (tras haber seleccionado la tabla, y dentro de la sección de estructura, Structure). Si en extra aparece el texto auto_increment, la configuración del incremento automático fue exitosa.


Sin embargo, en versiones más antiguas de phpMyAdmin, el auto incremento se configuraba de forma diferente, editando directamente estas propiedades extra de la columna. La opción de auto_increment se encontraba dentro de un menú desplegable en la categoría EXTRA (la última columna en el menú de creación de campos).


Para poder acceder a este menú de edición de columnas de la tabla no hay más que hacer clic en el icono del lápiz en la fila de la estructura (dentro de la solapa Structure) que se corresponde con la columna de la tabla que se desea editar.


En cualquier caso, siempre se puede ejecutar una sencilla consulta SQL para actualizar el estado de la columna y habilitar el auto incremento. Desde phpMyAdmin sólo hay que seleccionar la solapa marcada como SQL y escribir una sentencia SQL como la siguiente:

ALTER TABLE `nombre_tabla`
    CHANGE `nombre_columna_pk` `nombre_columna_pk`
           INT(longitud_clave) NOT NULL AUTO_INCREMENT

Sólo hay que reemplazar "nombre_tabla" por el nombre de la tabla que se está editando, "nombre_columna_pk" por el nombre de la columna que contiene la clave primaria, y "longitud_clave" por la longitud del número usado como clave primaria (el valor por defecto para un entero, int, es la longitud 11).


Si necesita asegurarse de que el campo que se está auto-incrementando es de hecho la clave primaria de la tabla actual, se puede volver a asignar la clave primaria de la tabla pulsando en el icono de llave correspondiente a la fila del campo deseado.


Hay que tener en cuenta que sólo puede especificarse un campo con auto incremento por cada tabla en MySQL. Por otra parte, el incremento automático sólo tiene sentido con claves primarias numéricas, y sólo puede haber una clave primaria en cada tabla MySQL.


Por último, si lo que desea es cambiar el valor del auto incremento en phpMyAdmin (por ejemplo, para que el campo de auto incremento comience en un número concreto), sólo hay que seleccionar la solapa Operations (operaciones) en phpMyAdmin, y escribir en el campo llamado AUTO_INCREMENT el nuevo valor inicial del campo con auto incremento y guardar los cambios.

El problema de MySQL desactivado en XAMPP


Instalar XAMPP es una forma rápida de tener configurado y funcionando un servidor Apache con PHP y bases de datos MySQL.


Pero en ocasiones, debido a algún tipo de problema de configuración de MySQL, XAMPP da un error y no es posible arrancar el servicio MySQL. Si se comprueba el estado de las bases de datos utilizando el panel de control de XAMPP (status), se observará un mensaje de advertencia como el siguiente: "MySQL database DEACTIVATED" (base de datos MySQL DESACTIVADA).


Cómo activar MySQL en XAMPP en 2 pasos


Aunque no estoy seguro de las causas exactas de este error, hay un truco para repararlo rápidamente y activar MySQL en XAMPP con 2 pasos sencillos:

  • En primer lugar, no instale MySQL como un servicio de Windows que se arrancaría por defecto junto con el sistema operativo. Ésta es una opción durante la instalación de XAMPP: simplemente hay que dejar sin marcar la casilla de instalar las bases de datos MySQL como un servicio del sistema.

  • Finalmente, cree un archivo de configuración MySQL para la nueva instalación de MySQL (lo cual puede hacerse automáticamente con Win MySQL admin).

En efecto, existe una forma automática de generar un archivo de configuración MySQL básico usando las herramientas instaladas por defecto en XAMPP. Sólo hay que ir a la [carpeta de instalación de XAMPP] / mysql / bin y ejecutar winmysqladmin.exe. En el cuadro de diálogo habría que escribir un nuevo nombre de usuario y contraseña, y dejar que el programa de gestión de MySQL genere automáticamente el archivo de inicialización MySQL por defecto.


¡Y eso es todo! Con desactivar el arranque inicial de MySQL como servicio de Windows por defecto, y crearle un archivo de configuración MySQL por defecto, con un nombre de usuario y contraseña definidos, debería bastar para cambiar el estado de "MySQL database deactivated" a MySQL database ACTIVATED (base de datos MySQL ACTIVA).


Cómo comprobar el estado activo de MySQL


El estado de las bases de datos MySQL puede comprobarse abriendo el panel de control de XAMPP: el servicio de MySQL debería tener ahora una etiqueta verde al lado con el mensaje running (en ejecución).


Aunque Win MySQL Admin resultó útil para crear un archivo .ini básico, no es necesario seguir utilizando el programa una vez que el servicio MySQL está activo. Win MySQL Admin es una aplicación antigua y no actualizada, que además lanza a veces errores de Windows aleatorios.


Pero no hay problema: basta con cerrar la ventana de ese gestor de MySQL, y usar la aplicación phpMyAdmin que viene instalada por defecto dentro de XAMPP.


La prueba final consiste en abrir phpMyAdmin para comprobar el estado activo de las bases de datos MySQL.


Puede accederse a phpMyAdmin a través del menú principal del servidor Apache instalado con XAMPP. Es necesario arrancar el servidor Apache, abrir la página principal del servidor usando el navegador web (basta con escribir "localchost" en la barra de direcciones y con la configuración por defecto de XAMPP) y pulsar en el enlace a phpMyAdmin para comprobar que las bases de datos MySQL han pasado a estado activo.


Espero que estos trucos sean de ayuda para activar sus bases de datos MySQL en XAMPP, de modo que pueda aprovechar las ventajas que este paquete ofrece para programar y probar en local MySQL y PHP.