Mysql: ¿Cómo Consultar la Estructura de una Base de Datos por Programación?

Mysql: ¿Cómo Consultar la Estructura de una Base de Datos por Programación?

Saludos, normalmente cuando se accede a una base de datos se busca hacer consultas sobre las filas de las tablas, pero en este artículo hablaremos sobre la creación de software capaz de acceder a la estructura de una base de datos, es decir, sus tablas, campos, llaves, tipos de datos, etc.

Las aplicaciones de esto son muchas e interesantes, en el campo de la automatización podemos citar algunos ejemplos cómo:

  • Generación de diccionarios de datos. Es posible recorrer la estructura y generar un documento que la describa en el formato exacto que tú necesites.
  • Comparación de estructuras para sincronización. Se puede hacer un programa que compare dos versiones de la misma base de datos y te indique que cambios se han realizado entre una y otra, e incluso generar el código SQL necesario para igualar ambas estructuras.
  • Generación automática de código. Este es un tema de gran interés para mí y para Qualisys, son programas que hacen otros programas, tienen gran aplicación en el software empresarial, por ejemplo, si en el software hay una tabla empleado, que tenga un Id, nombres, apellidos, fecha de nacimiento, etc., es seguro que se necesitará un formulario para crear y modificar estos datos, así como otro que liste todos los empleados registrados, una opción para generar un listado en Excel o PDF de los mismos, y posiblemente una clase que se encargue del mapeo objeto relacional. La creación de todos estos elementos es una tarea repetitiva, así que en Qualisys desarrollamos un programa que, conociendo la estructura de la base de datos, genera todo este código que luego es revisado y perfeccionado.

¿Y cómo se hace?

La mayoría de bases de datos proveen mecanismos para lograr esto, nuestro apreciado MySQL no es la excepción y tiene varias formas para hacerlo y lo mejor es que todas ellas son consultas que se hacen a la base de datos como si se tratara de cualquier SELECT normal. Por ejemplo, si enviamos la consulta:

DESCRIBE nombre_de_alguna_tabla;

MySQL nos devolverá como resultado una relación de las columnas de tabla con sus tipos.

Sin embargo, información aún más detallada se puede conseguir haciendo consultas a una base de datos llamada information_schema, presente en cada servidor MySQL, las consultas se hacen mediante SELECT, como en una base de datos cualquiera, esta base de datos tiene varias tablas, entre ellas encontramos:

  • SCHEMATA. Las bases de datos.
  • TABLES. Lo descrito por su nombre.
  • KEY_COLUMN_USAGE. Información sobre las llaves, primarias y foráneas.
  • Así por ejemplo, para listar las tablas de una base de datos diríamos:

SELECT

TABLE_NAME

FROM information_schema.TABLES

WHERE TABLE_SCHEMA  = "NOMBRE_BASE"

ORDER BY TABLE_NAME;

Aumentando columnas podemos conseguir más información algunas de las columnas disponibles son:

  • ENGINE. Lo descrito por su nombre.
  • TABLE_ROWS. Filas de la tabla.
  • DATA_LENGTH. Espacio usado por los datos.
  • INDEX_LENGTH. Espacio usado por los índices.

Para listar las columnas de una tabla diríamos:

SELECT

C.COLUMN_NAME, C.DATA_TYPE, C.IS_NULLABLE, C.COLUMN_DEFAULT

FROM`COLUMNS` AS C

WHERE

C.TABLE_SCHEMA = "NOMBRE_BASE" AND C.TABLE_NAME = "NOMBRE_TABLA"

ORDER BY C.ORDINAL_POSITION ASC

Existen infinidad de consultas que se pueden generar, pero espero que esto sirva como una introducción y despierte la curiosidad de quienes no conocen el tema. Si te gustó este artículo seguro hay otros en este Blog que te pueden interesar, no olvides darle me gusta y compartir.

Deja un Comentario

CAPTCHA code
X