domingo, 3 de octubre de 2010

Moises Soft en Facebook

Rolando Perez

Crea tu insignia

¿Cómo obtener los nombres de las tablas y vistas en MYSQL y POSTGRESQL?

Quizás se le presente esta situación como se me presentó, mientras programaba.

1- En MYSQL

Para obtener el nombre de todas las tablas de una base de datos en Mysql, podemos usar la simple consulta:

SHOW TABLES

Esto devolverá una sola columna con los nombres de las tablas. Como puedes ver en la figura de abajo:



Sin embargo a partir de la versión 5.0 de MYSQL se introdujeron la Vistas (View) , que en concepto pueden verse como tablas con la particularidad de que en ellas no se pueden hacer inserciones , ya que son el resultado de un consulta en una o más tablas.

Algo a tener en cuenta:


La consulta : SHOW TABLES , a partir de la versión MySQL 5.0.1 , lista también las vistas en la base de datos , como si se tratara de tablas. Hay que ser cuidadosos con esto pues una vista no es lo mismo que una tabla, y puede que se le intente dar el mismo tratamiento de forma errada que a una tabla.

Un ejemplo curioso de no tener cuidado en diferenciar tablas de vistas:

Un ejemplo comprobable de las consecuencias de no tener cuidado con esto es phpmyadmin , un software muy útil que está instalado en casi todos los servidores hosting que tienen instalado Apache – PHP – Mysql . Al exportar un base datos en phpmyadmin incluyendo los datos de la misma , se introduce un error y es que el script intenta insertar datos en las vistas.
Es por eso que a partir de la versión MySQL 5.0.2 , se introduce el modificador FULL a esta consulta que permite diferenciar entre vistas y tablas.


Al ejecutar la consulta: SHOW FULL TABLES

Se introduce una nueva columna Table_Type , la cual permite diferenciar entre tablas: BASE TABLE y vistas: VIEW
Vea el resultado de la consulta en figura siguiente:






De modo que es posible filtrar la consulta para obtener las Vistas , Tablas o ambas como en el ejemplo anterior.

SHOW full TABLES where Table_type='VIEW' => Obtiene solo las vistas
SHOW full TABLES where Table_type='BASE TABLE' => Obtiene solo las tablas


2- En POSTGRESQL

Para obtener las vistas y las tablas creadas por usted en POSTGRESQL puede usar la siguiente consulta:

select * from information_schema.tables where table_schema='public'

El resultado será una tabla de 3 columnas: table_catalog(nombre de la base de datos) , table_shema, table_name (nombre de la tabla).

Puede ver el ejemplo de la siguiente figura:



Para obtener las vistas creadas por usted en POSTGRESQL puede usar la siguiente consulta:

select * from information_schema.tables where table_schema='public' and table_type='VIEW'

Para obtener las tablas creadas por usted en POSTGRESQL puede usar la siguiente consulta:

select * from information_schema.tables where table_schema='public' and table_type='BASE TABLE'