Interactuar con una base de datos implica, fundamentalmente, conocer su estructura y poder acceder a la información que almacena. En el mundo de PostgreSQL, una de las bases de datos relacionales de código abierto más potentes y populares, saber cómo listar las tablas existentes y cómo consultar los datos dentro de ellas es una habilidad esencial para cualquier desarrollador, administrador o analista de datos.

Este artículo te guiará a través de los métodos más comunes y efectivos para realizar estas tareas cruciales. Exploraremos tanto las herramientas de línea de comandos, como el cliente interactivo psql, como las opciones gráficas que ofrece pgAdmin, el popular cliente de administración para PostgreSQL. Dominar estas técnicas te permitirá navegar por tus bases de datos con confianza y extraer la información necesaria para tus proyectos.

Listando Todas las Tablas en PostgreSQL
Antes de poder consultar datos, a menudo necesitas saber qué tablas existen en la base de datos con la que estás trabajando. PostgreSQL ofrece varias maneras de obtener esta lista, adaptándose a si prefieres la línea de comandos o una interfaz gráfica.
Método 1: Usando los Comandos de psql (\dt, \dt+)
El cliente de línea de comandos psql es una herramienta increíblemente poderosa y versátil para interactuar con PostgreSQL. Incluye una serie de "meta-comandos" (comandos que no son SQL estándar, sino específicos de psql) que facilitan tareas comunes de administración y exploración. Para listar tablas, los meta-comandos \dt y \dt+ son tus mejores aliados.
Para usar estos comandos, primero necesitas conectarte a tu servidor PostgreSQL y seleccionar la base de datos deseada. Puedes iniciar sesión usando el usuario por defecto (postgres) u otro usuario con permisos adecuados:
psql -U postgresUna vez dentro del shell de psql, puedes ver la versión de PostgreSQL y un prompt. Para seleccionar la base de datos con la que quieres trabajar (por ejemplo, una llamada testdb), usa el comando \c:
\c testdb;Si la base de datos no existe, deberás crearla primero (esto se hace con SQL estándar, no un meta-comando):
CREATE DATABASE testdb;Una vez conectado a la base de datos correcta, simplemente escribe \dt y presiona Enter:
\dtEsto te mostrará una lista concisa de las "relaciones" (objetos como tablas, vistas, secuencias, etc.) que son tablas en la base de datos actual. La salida típica se ve así:
List of relations Schema | Name | Type | Owner --------+----------------+-------+---------- public | mytable | table | postgres public | product | table | postgres public | test_date | table | postgres public | test_time | table | postgres public | test_timestamp | table | postgres public | week_day_sales | table | postgres (6 rows)La columna Schema indica el esquema al que pertenece la tabla (public es el esquema por defecto). Name es el nombre de la tabla, Type confirma que es una table, y Owner muestra el propietario de la tabla.
Si necesitas más detalles sobre cada tabla, usa el meta-comando \dt+:
\dt+Este comando proporciona una salida más verbosa, incluyendo información adicional como el tamaño en disco de la tabla, el método de acceso, si es persistente, y una descripción (si existe):
List of relations Schema | Name | Type | Owner | Persistence | Access method | Size | Description --------+----------------+-------+----------+-------------+---------------+-----------+------------- public | mytable | table | postgres | permanent | heap | 16 kB | public | product | table | postgres | permanent | heap | 16 kB | public | test_date | table | postgres | permanent | heap | 8192 bytes| public | test_time | table | postgres | permanent | heap | 8192 bytes| public | test_timestamp | table | postgres | permanent | heap | 8192 bytes| public | week_day_sales | table | postgres | permanent | heap | 8192 bytes| (6 rows)Los comandos \dt y \dt+ son rápidos y convenientes cuando trabajas directamente en el shell de psql.
Método 2: Consultando la Tabla del Catálogo pg_tables
PostgreSQL, como la mayoría de las bases de datos relacionales, mantiene información sobre su propia estructura (metadatos) en un conjunto de tablas especiales llamadas *tablas del catálogo del sistema*. Una de estas tablas es pg_tables, que contiene información sobre todas las tablas regulares (no temporales o unlogged) en la base de datos actual.
Puedes consultar esta tabla directamente usando una sentencia SELECT estándar de SQL. Esto es útil si necesitas obtener la lista de tablas programáticamente, dentro de un script SQL, o si prefieres usar sentencias SQL en lugar de meta-comandos de psql.
Para listar todas las tablas en el esquema public (el más común), puedes ejecutar la siguiente consulta:
SELECT tablename, schemaname, tableowner FROM pg_tables WHERE schemaname = 'public';Esta consulta seleccionará el nombre de la tabla, el nombre del esquema y el propietario para todas las entradas en pg_tables donde el esquema sea 'public'. La salida podría parecerse a esto:
schemaname | tablename | tableowner ------------+------------------+------------ public | test_date | postgres public | test_time | postgres public | test_timestamp | postgres public | week_day_sales | postgres public | mytable | postgres public | product | postgres (6 rows)Puedes seleccionar otras columnas de pg_tables según la información que necesites, como hasindexes, hasrules, hastriggers, o rowsecurity.
La principal diferencia entre usar los meta-comandos de psql y consultar pg_tables es el contexto: \dt es interactivo en psql, mientras que consultar pg_tables es una operación SQL que puedes ejecutar desde cualquier cliente que soporte SQL, incluyendo scripts.
Consultando Datos de una Tabla en PostgreSQL
Una vez que conoces las tablas disponibles, el siguiente paso lógico es consultar los datos que contienen. La sentencia SQL fundamental para esto es SELECT. Esta sentencia es increíblemente flexible y te permite recuperar datos de una o varias tablas, filtrar filas, ordenar resultados, y mucho más.
La Sentencia SELECT Fundamental
La forma más básica de la sentencia SELECT para recuperar todos los datos de una tabla es:
SELECT * FROM nombre_tabla;Aquí:
SELECTes la palabra clave que indica que quieres recuperar datos.*es un comodín que significa "todas las columnas".FROMes una palabra clave que especifica de qué tabla quieres obtener los datos.nombre_tablaes el nombre de la tabla de la que quieres consultar.
Por ejemplo, para ver todos los datos de una tabla llamada author_info:
SELECT * FROM author_info;Esta consulta recuperará todas las filas y todas las columnas de la tabla author_info. La salida dependerá de los datos contenidos en la tabla.
Consultando Columnas Específicas
En lugar de seleccionar todas las columnas con *, a menudo querrás ver solo un subconjunto de ellas. Para hacer esto, simplemente lista los nombres de las columnas que deseas después de la palabra clave SELECT, separadas por comas:
SELECT columna1, columna2 FROM nombre_tabla;Por ejemplo, para ver solo el nombre y la experiencia de los autores de la tabla author_info:
SELECT author_name, author_exp FROM author_info;Esto es más eficiente que usar SELECT * si solo necesitas un par de columnas, ya que la base de datos tiene que procesar y transferir menos datos.
Consultando Datos Específicos con la Cláusula WHERE
Recuperar todas las filas de una tabla rara vez es lo que necesitas en la práctica. La mayoría de las veces, querrás filtrar los datos para ver solo las filas que cumplen ciertas condiciones. Para esto, utilizas la cláusula WHERE.

La cláusula WHERE se coloca después de la cláusula FROM y especifica una condición booleana que debe ser verdadera para que una fila sea incluida en el resultado:
SELECT columna1, columna2 FROM nombre_tabla WHERE condicion;La condicion puede ser cualquier expresión que evalúe a verdadero, falso o nulo. Puedes usar operadores de comparación (=, !=, >, <, >=, <=), operadores lógicos (AND, OR, NOT), operadores de patrón (LIKE, ILIKE), y muchos otros.
Por ejemplo, para encontrar autores cuya experiencia sea mayor a 5 años:
SELECT * FROM author_info WHERE author_exp > 5;Esta consulta devolverá todas las columnas (debido al *) pero solo para aquellas filas donde el valor de la columna author_exp sea mayor que 5.
Puedes combinar condiciones usando AND y OR. Por ejemplo, para encontrar autores con más de 5 años de experiencia y cuyo nombre empiece con 'J':
SELECT * FROM author_info WHERE author_exp > 5 AND author_name LIKE 'J%';La cláusula WHERE es fundamental para la recuperación precisa de datos y es una de las partes más poderosas y utilizadas de la sentencia SELECT.
Consultando Datos Usando pgAdmin
Si prefieres una interfaz gráfica, pgAdmin es una excelente opción. Te permite visualizar la estructura de tu base de datos y consultar datos sin necesidad de escribir sentencias SQL completas (aunque también tiene una potente herramienta de consulta SQL).
Para consultar datos de una tabla específica usando pgAdmin:
- Abre pgAdmin y conéctate a tu servidor PostgreSQL.
- Expande el árbol de servidores, bases de datos y esquemas hasta encontrar la base de datos y el esquema que contienen la tabla deseada.
- Navega a la sección
Tables(Tablas) dentro del esquema. - Haz clic derecho sobre la tabla cuyos datos quieres consultar.
- En el menú contextual que aparece, busca la opción
View/Edit Data(Ver/Editar Datos). - Dentro de ese submenú, selecciona
All Rows(Todas las Filas).
Esto abrirá una nueva pestaña con una vista de los datos de la tabla. Por defecto, ejecutará una consulta SELECT * FROM nombre_tabla LIMIT 1000 (o similar) para mostrarte las primeras filas. Desde esta interfaz, a menudo puedes editar los datos, añadir nuevas filas, o usar la barra de filtro para aplicar condiciones similares a la cláusula WHERE sin escribir SQL manualmente.
Además de la opción "View/Edit Data", pgAdmin proporciona una "Query Tool" (Herramienta de Consulta) donde puedes escribir y ejecutar cualquier sentencia SQL SELECT (o cualquier otra sentencia SQL) directamente, lo que te da el control total que ofrece la línea de comandos, pero con funcionalidades de un editor de código y visualización de resultados integrada.
Comparación de Métodos
Aquí tienes una tabla que resume las principales diferencias y usos de los métodos para listar tablas y consultar datos:
| Tarea | Método | Herramienta | Tipo | Ventajas | Desventajas |
|---|---|---|---|---|---|
| Listar Tablas | \dt / \dt+ | psql | Meta-comando | Rápido y conciso en psql; \dt+ da más detalles. Ideal para exploración interactiva. | Solo funciona en psql; no es SQL estándar. |
Consultar pg_tables | Cualquier cliente SQL (psql, pgAdmin Query Tool, etc.) | Sentencia SQL | Estándar SQL; se puede usar en scripts; permite filtrar y ordenar la lista de tablas. | Requiere escribir una consulta SQL; la salida puede requerir formateo adicional en algunos clientes. | |
| Interfaz Gráfica | pgAdmin | GUI | Visual; fácil de usar para principiantes; no requiere comandos. | Puede ser más lento para bases de datos muy grandes; menos flexible que la línea de comandos/SQL directo. | |
| Consultar Datos | Sentencia SELECT | Cualquier cliente SQL (psql, pgAdmin Query Tool, etc.) | Sentencia SQL | Máxima flexibilidad y potencia; estándar SQL; permite filtrar, ordenar, unir tablas, etc. | Requiere conocer la sintaxis SQL. |
| View/Edit Data | pgAdmin | GUI | Fácil visualización y edición básica; filtrado simple sin SQL. | Funcionalidad limitada comparada con SELECT completo; no es ideal para consultas complejas o reportes. |
Preguntas Frecuentes
Aquí respondemos algunas preguntas comunes relacionadas con la lista y consulta de tablas en PostgreSQL:
¿Cuál es la diferencia principal entre \dt y consultar pg_tables?
La diferencia clave es que \dt es un meta-comando específico del cliente psql diseñado para la interacción rápida en la terminal, mientras que consultar pg_tables es una sentencia SQL estándar que puedes ejecutar desde cualquier cliente compatible con PostgreSQL. \dt es rápido para listar tablas interactivamente, mientras que consultar pg_tables es más flexible para scripting o para obtener información específica de las tablas (como si tienen índices) directamente desde los metadatos del sistema.
¿Puedo usar la cláusula WHERE con \dt o \dt+?
No, los meta-comandos \dt y \dt+ no soportan la cláusula WHERE. Son comandos fijos para listar relaciones. Si necesitas filtrar la lista de tablas (por ejemplo, por nombre), debes consultar la tabla del catálogo pg_tables usando una sentencia SELECT con una cláusula WHERE (por ejemplo, WHERE tablename LIKE 'mi_prefijo%').
¿Cómo consulto solo algunas columnas de una tabla?
En lugar de usar el comodín * en tu sentencia SELECT, lista explícitamente los nombres de las columnas que deseas ver, separados por comas. Por ejemplo: SELECT columna1, columna2, columna3 FROM tu_tabla;.
¿Cómo filtro filas basadas en múltiples condiciones?
Utiliza la cláusula WHERE y combina tus condiciones usando los operadores lógicos AND y OR. Por ejemplo: SELECT * FROM tabla WHERE condicion1 AND condicion2; o SELECT * FROM tabla WHERE condicion1 OR condicion2;. Puedes usar paréntesis para agrupar condiciones complejas.
¿Cómo consulto tablas en un esquema diferente al 'public'?
Tanto los meta-comandos de psql como las sentencias SQL permiten especificar el esquema. En psql, puedes usar \dt nombre_esquema.*. Con la consulta a pg_tables, puedes filtrar por el nombre del esquema en la cláusula WHERE: SELECT * FROM pg_tables WHERE schemaname = 'nombre_esquema';. Al consultar datos, prefija el nombre de la tabla con el nombre del esquema: SELECT * FROM nombre_esquema.nombre_tabla;.
Conclusión
Ya sea que prefieras la rapidez de los meta-comandos de psql como \dt y \dt+ para una vista general, la flexibilidad de consultar la tabla del catálogo pg_tables con SQL, o la conveniencia visual de pgAdmin, PostgreSQL te ofrece múltiples caminos para explorar la estructura de tu base de datos y listar sus tablas. De manera similar, la sentencia SELECT es la herramienta fundamental e indispensable para extraer datos, permitiéndote desde recuperar todas las filas de una tabla hasta filtrar y seleccionar información muy específica utilizando la cláusulaWHERE. Dominar estas técnicas te equipará para interactuar eficazmente con tus bases de datos PostgreSQL, un paso crucial para cualquier tarea de desarrollo o análisis de datos.
Si quieres conocer otros artículos parecidos a Ver y Consultar Tablas en PostgreSQL puedes visitar la categoría Bases de datos.

Aprende mas sobre MySQL