Skip to content

PSQL – Les commandes de base

Bonne lecture et bon apprentissage !
Junior TSAFACK – 20/08/2026
⏱️ Temps de lecture estimé : 7 minutes


psql est l’interface en ligne de commande officielle de PostgreSQL. C’est un outil extrêmement puissant qui permet d’exécuter des requêtes SQL, de gérer les bases de données et d’automatiser des tâches d’administration. Dans ce cours, vous apprendrez à vous connecter, à utiliser les commandes méta (backslash) et à manipuler vos premières bases et tables.


En tant qu’utilisateur postgres (le superutilisateur du système PostgreSQL) :

Terminal window
sudo -u postgres psql

Cette commande utilise la socket Unix locale (connexion peer). Aucun mot de passe n’est demandé car le système considère que l’utilisateur postgres du système est légitime.

Pour spécifier un hôte, un port, un utilisateur ou une base :

Terminal window
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres
Option Description
-h Hôte (localhost, 127.0.0.1, ou une adresse IP distante)
-p Port (par défaut 5432)
-U Utilisateur
-d Base de données

Vous pouvez simplifier la connexion en définissant des variables d’environnement :

Terminal window
export PGHOST=localhost
export PGPORT=5432
export PGUSER=postgres
export PGDATABASE=postgres
psql

Les commandes qui commencent par \ sont des commandes internes à psql. Elles permettent d’interroger le catalogue système sans écrire de SQL.

Commande Description Exemple
\l ou \l+ Liste les bases de données \l+ (affiche aussi la taille et les propriétaires)
\du Liste les utilisateurs/rôles \du
\dt ou \dt+ Liste les tables (+ taille) \dt+
\dn Liste les schémas \dn
\dS <table> Affiche la structure d’une table \dS clients
\dv Liste les vues \dv
\df Liste les fonctions \df
\x Active l’affichage vertical \x puis SELECT * FROM table;
\q Quitte psql \q
\? Affiche l’aide des commandes méta \?
\h <commande> Affiche l’aide SQL \h CREATE TABLE
\c <database> Se connecte à une autre base \c ma_base
\timing Active/désactive l’affichage des temps d’exécution \timing

Avec \x (extended display), les colonnes sont affichées les unes en dessous des autres, ce qui est pratique pour les lignes longues :

\x
SELECT * FROM clients WHERE id = 1;

Résultat :

-[ RECORD 1 ]---+---------------------------
id | 1
nom | Dupont Jean
date_inscription| 2026-08-20

psql dispose de nombreuses options en ligne de commande pour automatiser et formater les sorties :

Option Effet Exemple
-c "commande" Exécute une commande SQL et quitte psql -c "SELECT version();"
-f fichier.sql Exécute un fichier de scripts psql -f init.sql -d ma_base
-L fichier.log Enregistre la session dans un fichier log psql -L session.log
-H Exporte les résultats au format HTML psql -H -c "SELECT * FROM clients" > rapport.html
-q Mode silencieux (pas de messages) psql -q -f script.sql
-t Affiche uniquement les lignes de résultats (sans entêtes) psql -t -c "SELECT nom FROM clients"
-A Sortie non alignée (utile pour les scripts) psql -A -t -c "SELECT nom FROM clients"
-o <fichier> Redirige la sortie vers un fichier psql -o resultat.txt -c "SELECT * FROM clients"

1. Exécuter une requête et exporter en CSV

Terminal window
psql -d ma_base -c "COPY clients TO STDOUT WITH CSV HEADER" > clients.csv

2. Exécuter un fichier SQL avec logging

Terminal window
psql -d ma_base -f migration.sql -L migration.log

3. Récupérer une seule colonne pour un script bash

Terminal window
psql -t -A -d ma_base -c "SELECT email FROM clients WHERE id = 1"

En SQL (dans psql) :

CREATE DATABASE magasin;

Avec le wrapper (en ligne de commande) :

Terminal window
createdb magasin
DROP DATABASE magasin;

ou

Terminal window
dropdb magasin
\c magasin

CREATE TABLE clients (
id SERIAL PRIMARY KEY,
nom VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
date_inscription DATE DEFAULT CURRENT_DATE
);
\d clients
DROP TABLE clients;

Vider une table (sans supprimer la structure)

Section titled “Vider une table (sans supprimer la structure)”
TRUNCATE TABLE clients;

Voici une session psql complète qui illustre l’ensemble des commandes vues :

Terminal window
# Connexion
sudo -u postgres psql
# Liste des bases
\l
# Créer une base
CREATE DATABASE magasin;
# Se connecter à la base
\c magasin
# Créer une table
CREATE TABLE produits (
id SERIAL PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
prix DECIMAL(10,2) NOT NULL,
stock INTEGER DEFAULT 0
);
# Insérer des données
INSERT INTO produits (nom, prix, stock) VALUES
('Ordinateur portable', 899.99, 15),
('Souris sans fil', 29.99, 50),
('Clavier mécanique', 79.99, 30);
# Interroger
SELECT * FROM produits;
# Afficher la structure
\d produits
# Activer le timer
\timing
# Requête avec calcul
SELECT COUNT(*) FROM produits WHERE stock > 10;
# Quitter
\q

Vous pouvez personnaliser le comportement de psql avec le fichier .psqlrc dans votre répertoire personnel.

Exemple (~/.psqlrc) :

Terminal window
\set PROMPT1 '%/[%n@%m:%>] '
\set PROMPT2 '[%n@%m:%>] '
\set HISTSIZE 5000
\x auto

\x auto active l’affichage vertical automatiquement lorsque la ligne est trop large.


Vous maîtrisez maintenant les bases de psql. Dans le prochain cours, vous approfondirez la gestion des bases de données : création avancée (encodage, templates, propriétaires), et gestion des tables (types de colonnes, contraintes, héritage, partitionnement).

👉 Cours 4 : Gestion des bases de données et des tables


Junior TSAFACK – 20/08/2026