Manipulations de base avec psql

Dans ce premier TP nous allons effectuer quelques manipulations simples pour nous familiariser avec l'outil en ligne de commande psql.

La première étape est généralement de changer d'utilisateur pour passer sur l'utilisateur système postgres si ce n'est pas déjà le cas

su - postgres

Une fois connecté en tant que postgres, on peut normalement appeler psql sans argument pour se retrouver connecté à l'instance locale sur le port par défaut (5432). Si il y a plusieurs instances sur la machine, mieux vaut spécifier le port explicitement.

  • Une fois connecté à l'instance, nous sommes dans la console interactive de psql et le prompt change
$ psql -p 5432
psql (13.1 (Debian 13.1-1.pgdg100+1))
Type "help" for help.

postgres=#
  • Pour commencer, afficher les deux menus d'aide :
\?
\help

\? est le menu d'aide PostgreSQL avec la liste de toutes les commande d'administration \help est le menu d'aide SQL qui permet d'obtenir de la documentation sur les commandes SQL

  • Obtenir le détail d'une commande :
\help SELECT

Essayer les quelques commandes les plus courantes :

  • \l lister les bases
  • \c se connecter à une base (en créer une avant pour essayer CREATE DATABASE test;)
  • \dt lister les tables
  • \dt+ lister les tables avec informations supplémentaires (comme la taille des tables)
  • \d décire une table
  • \dn lister les schémas

Nous allons maintenant importer un jeu de données pour peupler la base avec quelques objets.

Télécharger le jeu de données : https://github.com/morenoh149/postgresDBSamples/tree/master/pagila-0.10.1

  • Une fois téléchargées, créer une base pagila puis importer les données à l'intérieur.

Quelques commandes utiles :

  • \! permet de passer en mode shell sans quitter psql, on revient à psql avec un appel à exit
  • \cd permet de changer le répertoire de travail depuis psql
  • \i permet de charger et exécuter un fichier sql

Une fois les données charger, nous pouvons continuer avec quelques commandes usuelles :

  • \df lister les fonctions
  • \dv lister les vues
  • Exécuter un SELECT : SELECT * FROM public.customer; puis \g pour ré-exécuter la dernière requête
  • \s pour afficher l'historique des commandes (on peut ajouter un nom de fichier en argument pour sauvegarder l'historique dans un fichier)
  • \timing puis une requête pour mesurer le temps d'exécution
  • \x puis ré-exécuter le SELECT précédent pour constater l'affichage pivoté

Et enfin :

  • \q pour quitter psql