sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo enumerar bases de datos y tablas en PostgreSQL usando psql

Cuando se trata de administrar bases de datos de Postgres, existe una amplia variedad de herramientas de terceros disponibles, como SQL Workbench/J o pgAdmin III. Sin embargo, Postgres en sí viene con una poderosa herramienta de línea de comandos llamada psql. lo cual es excelente para aquellos que están familiarizados con la terminal o buscan tareas de administración de scripts. Una de las tareas más comunes que realiza un administrador de base de datos es simplemente familiarizarse con el entorno. Esto implica hacer preguntas como "¿Qué bases de datos residen en este servidor?" o "¿Qué tablas se almacenan en una base de datos particular en este servidor?". En este tutorial, aprenderemos cómo responder estas preguntas clave desde la línea de comandos usando psql .

Meta-comandos

Además de poder enviar consultas SQL sin procesar al servidor a través de psql también puede aprovechar el psql meta-comandos para obtener información del servidor. Los meta-comandos son comandos que son evaluados por psql y, a menudo, se traduce a SQL que se emite en las tablas del sistema en el servidor, lo que ahorra tiempo a los administradores al realizar tareas de rutina. Se indican con una barra invertida y luego van seguidos del comando y sus argumentos. Veremos algunos ejemplos de esto a continuación.

Listado de bases de datos

Un solo proceso de servidor de Postgres puede administrar varias bases de datos al mismo tiempo. Cada base de datos se almacena como un conjunto separado de archivos en su propio directorio dentro del directorio de datos del servidor. Para ver todas las bases de datos definidas en el servidor, puede usar \list meta-comando o su atajo \l .

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 sales     | ubuntu   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

Cambio de bases de datos

La mayoría de los servidores Postgres tienen tres bases de datos definidas por defecto:template0 , template1 y postgres . template0 y template1 son bases de datos esqueleto que son o pueden ser utilizadas por CREATE DATABASE dominio. postgres es la base de datos predeterminada a la que se conectará antes de crear otras bases de datos. Una vez que haya creado otra base de datos, querrá cambiar a ella para crear tablas e insertar datos. A menudo, cuando se trabaja con servidores que administran múltiples bases de datos, se encontrará con la necesidad de cambiar de base de datos con frecuencia. Esto se puede hacer con \connect meta-comando o su atajo \c .

postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#

Tablas de listado

Una vez que se haya conectado a una base de datos, querrá inspeccionar qué tablas se han creado allí. Esto se puede hacer con \dt metacomando. Sin embargo, si no hay tablas, no obtendrá ningún resultado.

sales=# \dt
No relations found.
sales=#

Después de crear una tabla, se devolverá en una lista tabular de tablas creadas.

sales=# CREATE TABLE leads (id INTEGER PRIMARY KEY, name VARCHAR);
CREATE TABLE
sales=# \dt
        List of relations
 Schema | Name  | Type  | Owner
--------+-------+-------+--------
 public | leads | table | ubuntu
(1 row)

sales=#