Lorsqu'il s'agit d'administrer des bases de données PostgreSQL, il existe une grande variété d'outils tiers disponibles tels que SQL Workbench/J ou pgAdmin.

Cependant, PostgreSQL est livré avec un outil de commandes en ligne de commande appelé psql qui est idéal pour ceux qui sont familiers avec le terminal ou qui cherchent à scripter les tâches d'administration.

L'une des tâches les plus courantes d'un administrateur de base de données consiste simplement à se familiariser avec l'environnement.

Lister les bases de données

Un seul processus de 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 distinct de fichiers dans son propre répertoire au sein du répertoire de données du serveur. La commande \l permet de lister l'ensemble des bases de données du serveur :

Exemple
postgres=# \l
                                      Liste des bases de données
    Nom    | Propriétaire | Encodage |  Collationnement   |    Type caract.    |    Droits d'accès
-----------+--------------+----------+--------------------+--------------------+-----------------------
 postgres  | postgres     | UTF8     | French_France.1252 | French_France.1252 |
 template0 | postgres     | UTF8     | French_France.1252 | French_France.1252 | =c/postgres          +
           |              |          |                    |                    | postgres=CTc/postgres
 template1 | postgres     | UTF8     | French_France.1252 | French_France.1252 | =c/postgres          +
           |              |          |                    |                    | postgres=CTc/postgres
 tutorial  | system       | UTF8     | French_France.1252 | French_France.1252 |
 webengine | system       | UTF8     | French_France.1252 | French_France.1252 |

La commande étendue \l+ donne des informations supplémentaires importantes comme la taille de la base :

postgres=# \l+
                                                                        Liste des bases de données
    Nom    | Propriétaire | Encodage |  Collationnement   |    Type caract.    |    Droits d'accès     | Taille  | Tablespace |                Description
-----------+--------------+----------+--------------------+--------------------+-----------------------+---------+------------+--------------------------------------------
 postgres  | postgres     | UTF8     | French_France.1252 | French_France.1252 |                       | 7933 kB | pg_default | default administrative connection database
 template0 | postgres     | UTF8     | French_France.1252 | French_France.1252 | =c/postgres          +| 7753 kB | pg_default | unmodifiable empty database
           |              |          |                    |                    | postgres=CTc/postgres |         |            |
 template1 | postgres     | UTF8     | French_France.1252 | French_France.1252 | =c/postgres          +| 7777 kB | pg_default | default template for new databases
           |              |          |                    |                    | postgres=CTc/postgres |         |            |
 tutorial  | system       | UTF8     | French_France.1252 | French_France.1252 |                       | 44 MB   | pg_default |
(5 lignes)
Changement 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 la commande CREATE DATABASE. postgres est la base de données par défaut à laquelle vous vous connecterez avant d'avoir créé d'autres bases de données. Une fois que vous aurez créé une autre base de données, vous voudrez vous y connecter 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 besoin de passer fréquemment d'une base de données à l'autre. Pour ce faire, vous pouvez utiliser la méta-commande \connect ou son raccourci \c.

postgres=# \c tutorial  
Vous êtes maintenant connecté à la base de données "tutorial" en tant qu'utilisateur "postgres".
tutorial=#
Liste des tables

Une fois que vous êtes connecté à une base de données, vous souhaitez vérifier quelles tables ont été créées. Vous pouvez le faire à l'aide de la méta-commande \dt. Cependant, si aucune table n'a été créée, vous n'obtiendrez aucun résultat.

tutorial=# \dt
Aucune relation trouvée.
tutorial=#

Après avoir créé une table, celle-ci sera retournée dans la liste des tables créées.

tutorial=# CREATE TABLE params (id INTEGER PRIMARY KEY, name VARCHAR) ;
CREATE TABLE
tutorial=# \dt
          Liste des relations
 Schéma |  Nom   | Type  | Propriétaire
--------+--------+-------+--------------
 public | params | table | system
(1 ligne)

La méta-commande \dt+ donne plus d'information sur la table, notamment sa taille :

tutorial=# \dt+
                               Liste des relations
 Schéma |  Nom   | Type  | Propriétaire | Persistence |   Taille   | Description
--------+--------+-------+--------------+-------------+------------+-------------
 public | params | table | system       | permanent   | 8192 bytes |
(1 ligne)