PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment répertorier les bases de données et les tables dans PostgreSQL à l'aide de psql

Lorsqu'il s'agit d'administrer des bases de données Postgres, il existe une grande variété d'outils tiers disponibles tels que SQL Workbench/J ou pgAdmin III. Cependant, Postgres lui-même est livré avec un puissant outil de ligne de commande appelé psql ce qui est idéal pour ceux qui connaissent le terminal ou qui cherchent à exécuter des tâches d'administration de scripts. L'une des tâches les plus courantes d'un administrateur de base de données consiste simplement à se familiariser avec l'environnement. Cela implique de poser des questions telles que « Quelles bases de données résident sur ce serveur ? » ou "Quelles tables sont stockées dans une base de données particulière sur ce serveur ?". Dans ce tutoriel, nous allons apprendre à répondre à ces questions clés depuis la ligne de commande en utilisant psql .

Méta-commandes

En plus de pouvoir soumettre des requêtes SQL brutes au serveur via psql vous pouvez également profiter du psql méta-commandes pour obtenir des informations du serveur. Les méta-commandes sont des commandes qui sont évaluées par psql et souvent traduit en SQL émis sur les tables système du serveur, ce qui permet aux administrateurs de gagner du temps lors de l'exécution de tâches de routine. Ils sont indiqués par une barre oblique inverse puis suivis de la commande et de ses arguments. Nous en verrons quelques exemples ci-dessous.

Liste des bases de données

Un seul processus serveur Postgres peut gérer plusieurs bases de données en même temps. Chaque base de données est stockée sous la forme d'un ensemble de fichiers distinct dans son propre répertoire dans le répertoire de données du serveur. Pour afficher toutes les bases de données définies sur le serveur, vous pouvez utiliser le \list méta-commande ou son raccourci \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)

Changer de base de données

La plupart des serveurs Postgres ont trois bases de données définies par défaut :template0 , template1 et postgres . template0 et template1 sont des bases de données squelettes qui sont ou peuvent être utilisées par le CREATE DATABASE commande. postgres est la base de données par défaut à laquelle vous vous connecterez avant de créer d'autres bases de données. Une fois que vous avez créé une autre base de données, vous voudrez y basculer afin de créer des tables et d'insérer des données. Souvent, lorsque vous travaillez avec des serveurs qui gèrent plusieurs bases de données, vous aurez fréquemment besoin de passer d'une base de données à l'autre. Cela peut être fait avec le \connect méta-commande ou son raccourci \c .

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

Liste des tableaux

Une fois que vous vous êtes connecté à une base de données, vous voudrez inspecter les tables qui y ont été créées. Cela peut être fait avec le \dt méta-commande. Cependant, s'il n'y a pas de tables, vous n'obtiendrez aucune sortie.

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

Après avoir créé une table, elle sera renvoyée dans une liste tabulaire des tables créées.

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=#