Aller au contenu principal
Dev Serein
Base de données

PostgreSQL — commandes essentielles

Les commandes PostgreSQL essentielles pour utiliser psql, créer et interroger des bases, gérer tables, rôles, permissions, index, transactions, sauvegardes, performances et maintenance.

201commandesMis à jour le25 août 2026NiveauIntermédiaire
Toutes les cheatsheets

Connexion

8 commandes
CommandeDescriptionExempleRisque
psqlOuvre le client interactif PostgreSQL avec les paramètres de connexion par défaut.
psql
Sûr
psql -USe connecte à PostgreSQL avec un rôle précis.
psql -U postgres
Sûr
psql -dSe connecte directement à une base de données.
psql -d application
Sûr
psql -hIndique l'hôte PostgreSQL auquel se connecter.
psql -h localhost -U application -d application
Sûr
psql -pIndique explicitement le port du serveur PostgreSQL.
psql -h localhost -p 5432 -U application
Sûr
psql URISe connecte en utilisant une URI PostgreSQL. Éviter d'inscrire un mot de passe directement dans l'historique du terminal.
psql postgresql://application@localhost:5432/application
Attention
\conninfoAffiche les informations concernant la connexion PostgreSQL actuellement utilisée.
\conninfo
Sûr
\qQuitte le terminal interactif psql.
\q
Sûr

Aide & découverte

6 commandes
CommandeDescriptionExempleRisque
\?Affiche l'aide concernant les méta-commandes disponibles dans psql.
\?
Sûr
\hAffiche la liste des commandes SQL pour lesquelles psql peut fournir de l'aide.
\h
Sûr
\h <commande>Affiche la syntaxe et l'aide d'une instruction SQL particulière.
\h CREATE TABLE
Sûr
SELECT version();Affiche la version du serveur PostgreSQL auquel la session est connectée.
SELECT version();
Sûr
SHOW server_version;Affiche la version du serveur PostgreSQL sous une forme concise.
SHOW server_version;
Sûr
\timingActive ou désactive l'affichage du temps d'exécution des commandes dans psql.
\timing
Sûr

Bases de données

9 commandes
CommandeDescriptionExempleRisque
\lListe les bases de données accessibles depuis le serveur PostgreSQL.
\l
Sûr
\l+Liste les bases avec des informations supplémentaires comme leur taille et leur description.
\l+
Sûr
CREATE DATABASECrée une nouvelle base de données.
CREATE DATABASE application;
Sûr
CREATE DATABASE ... OWNERCrée une base en définissant explicitement son propriétaire.
CREATE DATABASE application OWNER app_user;
Sûr
\cChange la base utilisée par la session psql.
\c application
Sûr
\c base utilisateurChange simultanément de base et de rôle de connexion.
\c application app_user
Sûr
ALTER DATABASEModifie certaines propriétés d'une base de données existante.
ALTER DATABASE application RENAME TO application_prod;
Attention
DROP DATABASESupprime définitivement une base de données et toutes les données qu'elle contient.
DROP DATABASE application;
Danger
DROP DATABASE IF EXISTSSupprime une base uniquement lorsqu'elle existe.
DROP DATABASE IF EXISTS application_test;
Danger

Schémas

7 commandes
CommandeDescriptionExempleRisque
\dnListe les schémas présents dans la base courante.
\dn
Sûr
\dn+Affiche les schémas avec des informations supplémentaires.
\dn+
Sûr
CREATE SCHEMACrée un nouveau schéma permettant d'organiser les objets d'une base.
CREATE SCHEMA ecommerce;
Sûr
CREATE SCHEMA AUTHORIZATIONCrée un schéma en définissant explicitement son propriétaire.
CREATE SCHEMA ecommerce AUTHORIZATION app_user;
Sûr
SET search_pathDéfinit l'ordre dans lequel PostgreSQL recherche les objets non qualifiés pendant la session.
SET search_path TO ecommerce, public;
Attention
DROP SCHEMASupprime un schéma vide.
DROP SCHEMA ecommerce;
Attention
DROP SCHEMA CASCADESupprime le schéma ainsi que les objets qui en dépendent.
DROP SCHEMA ecommerce CASCADE;
Danger

Tables

12 commandes
CommandeDescriptionExempleRisque
\dtListe les tables visibles dans le search_path courant.
\dt
Sûr
\dt *.*Liste les tables de l'ensemble des schémas accessibles.
\dt *.*
Sûr
\d <table>Affiche la structure d'une table : colonnes, types, contraintes et index.
\d users
Sûr
\d+ <table>Affiche une description plus détaillée de la table.
\d+ users
Sûr
CREATE TABLECrée une nouvelle table.
CREATE TABLE users (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, email TEXT NOT NULL UNIQUE);
Sûr
CREATE TABLE IF NOT EXISTSCrée une table uniquement lorsqu'aucune relation portant ce nom n'existe déjà.
CREATE TABLE IF NOT EXISTS users (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY);
Sûr
ALTER TABLE ADD COLUMNAjoute une nouvelle colonne à une table existante.
ALTER TABLE users ADD COLUMN created_at TIMESTAMPTZ NOT NULL DEFAULT now();
Attention
ALTER TABLE RENAME COLUMNRenomme une colonne existante.
ALTER TABLE users RENAME COLUMN name TO username;
Attention
ALTER TABLE DROP COLUMNSupprime définitivement une colonne et les données qu'elle contient.
ALTER TABLE users DROP COLUMN old_field;
Danger
TRUNCATESupprime rapidement toutes les lignes d'une table sans supprimer sa structure.
TRUNCATE TABLE logs;
Danger
DROP TABLESupprime définitivement une table.
DROP TABLE users;
Danger
DROP TABLE IF EXISTSSupprime la table uniquement lorsqu'elle existe.
DROP TABLE IF EXISTS temp_import;
Danger

Types de données

11 commandes
CommandeDescriptionExempleRisque
INTEGERType entier signé classique.
age INTEGER
Sûr
BIGINTType entier utilisant une plage plus importante qu'INTEGER.
counter BIGINT
Sûr
NUMERICType numérique exact adapté notamment aux valeurs nécessitant une précision décimale contrôlée.
price NUMERIC(10,2)
Sûr
TEXTChaîne de caractères de longueur variable sans limite arbitraire définie par le type.
description TEXT
Sûr
BOOLEANStocke une valeur booléenne.
active BOOLEAN NOT NULL DEFAULT true
Sûr
DATEStocke une date sans heure.
birth_date DATE
Sûr
TIMESTAMPStocke une date et une heure sans information de fuseau horaire.
scheduled_at TIMESTAMP
Sûr
TIMESTAMPTZStocke un instant temporel avec gestion du fuseau horaire par PostgreSQL. Souvent préférable pour les événements réels.
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
Sûr
UUIDType natif destiné au stockage d'identifiants UUID.
id UUID PRIMARY KEY
Sûr
JSONBStocke des documents JSON sous une représentation binaire optimisée pour leur interrogation et leur indexation.
metadata JSONB NOT NULL DEFAULT '{}'::jsonb
Sûr
ARRAYPostgreSQL permet à une colonne de contenir un tableau d'un type donné.
tags TEXT[]
Sûr

Contraintes

8 commandes
CommandeDescriptionExempleRisque
PRIMARY KEYIdentifie de manière unique chaque ligne de la table.
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
Sûr
NOT NULLInterdit les valeurs NULL dans une colonne.
email TEXT NOT NULL
Sûr
UNIQUEImpose l'unicité des valeurs concernées.
email TEXT UNIQUE
Sûr
CHECKImpose une condition aux données enregistrées.
CHECK (price >= 0)
Sûr
DEFAULTDéfinit une valeur utilisée lorsque la colonne n'est pas fournie lors de l'insertion.
created_at TIMESTAMPTZ DEFAULT now()
Sûr
FOREIGN KEYCrée une relation d'intégrité référentielle avec une clé d'une autre table.
FOREIGN KEY (user_id) REFERENCES users(id)
Sûr
ON DELETE CASCADESupprime automatiquement les lignes dépendantes lorsque la ligne référencée est supprimée.
REFERENCES users(id) ON DELETE CASCADE
Attention
ON DELETE SET NULLPlace la clé étrangère à NULL lorsque la ligne référencée est supprimée.
REFERENCES users(id) ON DELETE SET NULL
Attention

Insertion

5 commandes
CommandeDescriptionExempleRisque
INSERT INTOAjoute une nouvelle ligne dans une table.
INSERT INTO users (email, username) VALUES ('alice@example.com', 'alice');
Sûr
INSERT plusieurs lignesInsère plusieurs lignes en une seule instruction.
INSERT INTO tags (name) VALUES ('docker'), ('linux'), ('postgresql');
Sûr
INSERT ... RETURNINGRetourne immédiatement des colonnes de la ligne créée.
INSERT INTO users (email) VALUES ('alice@example.com') RETURNING id;
Sûr
INSERT ... ON CONFLICT DO NOTHINGIgnore une insertion lorsqu'elle provoquerait le conflit d'unicité ciblé.
INSERT INTO users (email) VALUES ('alice@example.com') ON CONFLICT (email) DO NOTHING;
Sûr
INSERT ... ON CONFLICT DO UPDATEImplémente un upsert en mettant à jour la ligne lorsqu'un conflit correspondant survient.
INSERT INTO users (email, username) VALUES ('alice@example.com', 'alice') ON CONFLICT (email) DO UPDATE SET username = EXCLUDED.username;
Attention

Lecture des données

12 commandes
CommandeDescriptionExempleRisque
SELECTLit des données depuis une ou plusieurs relations.
SELECT id, email FROM users;
Sûr
SELECT *Sélectionne toutes les colonnes. Pratique pour l'exploration mais souvent à éviter dans les requêtes applicatives lorsque seules certaines colonnes sont nécessaires.
SELECT * FROM users;
Sûr
WHEREFiltre les lignes selon une condition.
SELECT * FROM users WHERE active = true;
Sûr
ORDER BYTrie le résultat selon une ou plusieurs expressions.
SELECT * FROM users ORDER BY created_at DESC;
Sûr
LIMITLimite le nombre de lignes retournées.
SELECT * FROM users ORDER BY id LIMIT 20;
Sûr
OFFSETIgnore un nombre déterminé de lignes avant de retourner le résultat.
SELECT * FROM users ORDER BY id LIMIT 20 OFFSET 40;
Sûr
DISTINCTÉlimine les doublons du résultat.
SELECT DISTINCT country FROM users;
Sûr
BETWEENTeste si une valeur se trouve dans un intervalle inclusif.
SELECT * FROM products WHERE price BETWEEN 10 AND 50;
Sûr
INTeste si une valeur appartient à un ensemble donné.
SELECT * FROM users WHERE role IN ('admin', 'editor');
Sûr
IS NULLRecherche les valeurs SQL NULL.
SELECT * FROM users WHERE deleted_at IS NULL;
Sûr
LIKERecherche un motif textuel sensible à la casse selon la collation et les données.
SELECT * FROM users WHERE email LIKE '%@example.com';
Sûr
ILIKEExtension PostgreSQL permettant une recherche de motif insensible à la casse selon les règles applicables.
SELECT * FROM users WHERE username ILIKE 'alice%';
Sûr

Agrégations

7 commandes
CommandeDescriptionExempleRisque
COUNTCompte les lignes ou valeurs correspondant à la requête.
SELECT COUNT(*) FROM users;
Sûr
SUMCalcule la somme des valeurs.
SELECT SUM(total) FROM orders;
Sûr
AVGCalcule la moyenne.
SELECT AVG(price) FROM products;
Sûr
MINRetourne la valeur minimale.
SELECT MIN(price) FROM products;
Sûr
MAXRetourne la valeur maximale.
SELECT MAX(price) FROM products;
Sûr
GROUP BYRegroupe les lignes avant l'application des fonctions d'agrégation.
SELECT status, COUNT(*) FROM orders GROUP BY status;
Sûr
HAVINGFiltre les groupes après leur agrégation.
SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 10;
Sûr

Jointures

5 commandes
CommandeDescriptionExempleRisque
INNER JOINRetourne les lignes possédant une correspondance selon la condition de jointure.
SELECT u.email, o.id FROM users u INNER JOIN orders o ON o.user_id = u.id;
Sûr
LEFT JOINConserve toutes les lignes de la relation de gauche même lorsqu'aucune correspondance n'existe à droite.
SELECT u.email, o.id FROM users u LEFT JOIN orders o ON o.user_id = u.id;
Sûr
RIGHT JOINConserve toutes les lignes de la relation de droite.
SELECT u.email, o.id FROM users u RIGHT JOIN orders o ON o.user_id = u.id;
Sûr
FULL JOINConserve les lignes des deux côtés, avec ou sans correspondance.
SELECT * FROM table_a FULL JOIN table_b ON table_a.id = table_b.id;
Sûr
CROSS JOINProduit le produit cartésien des deux ensembles. Le nombre de lignes peut devenir très important.
SELECT * FROM sizes CROSS JOIN colors;
Attention

Mise à jour

3 commandes
CommandeDescriptionExempleRisque
UPDATEModifie les lignes correspondant à la condition WHERE.
UPDATE users SET active = false WHERE id = 42;
Attention
UPDATE ... RETURNINGModifie les données puis retourne les lignes affectées.
UPDATE users SET active = false WHERE id = 42 RETURNING *;
Attention
UPDATE sans WHEREModifie toutes les lignes de la table. Vérifier impérativement la requête avant exécution.
UPDATE users SET active = false;
Danger

Suppression

4 commandes
CommandeDescriptionExempleRisque
DELETESupprime les lignes correspondant à une condition.
DELETE FROM sessions WHERE expires_at < now();
Attention
DELETE ... RETURNINGSupprime les lignes puis retourne les données supprimées.
DELETE FROM sessions WHERE id = 42 RETURNING *;
Attention
DELETE sans WHERESupprime toutes les lignes de la table.
DELETE FROM sessions;
Danger
TRUNCATEVide rapidement une table. À utiliser avec beaucoup de prudence.
TRUNCATE TABLE sessions;
Danger

CTE & sous-requêtes

3 commandes
CommandeDescriptionExempleRisque
WITHDéfinit une Common Table Expression afin de structurer une requête complexe.
WITH active_users AS (SELECT * FROM users WHERE active = true) SELECT COUNT(*) FROM active_users;
Sûr
WITH RECURSIVEPermet de construire une requête récursive, utile notamment pour des données hiérarchiques.
WITH RECURSIVE tree AS (...) SELECT * FROM tree;
Sûr
EXISTSTeste l'existence d'au moins une ligne retournée par une sous-requête.
SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);
Sûr

Transactions

6 commandes
CommandeDescriptionExempleRisque
BEGINDémarre explicitement une transaction.
BEGIN;
Sûr
COMMITValide définitivement les modifications de la transaction courante.
COMMIT;
Attention
ROLLBACKAnnule les modifications non validées de la transaction courante.
ROLLBACK;
Sûr
SAVEPOINTCrée un point intermédiaire à l'intérieur d'une transaction.
SAVEPOINT avant_modification;
Sûr
ROLLBACK TO SAVEPOINTAnnule les modifications effectuées depuis un savepoint sans annuler toute la transaction.
ROLLBACK TO SAVEPOINT avant_modification;
Sûr
RELEASE SAVEPOINTLibère un savepoint devenu inutile.
RELEASE SAVEPOINT avant_modification;
Sûr

Index

8 commandes
CommandeDescriptionExempleRisque
\diListe les index visibles.
\di
Sûr
CREATE INDEXCrée un index sur une ou plusieurs colonnes afin d'accélérer certaines recherches au prix d'espace et de travail supplémentaire lors des écritures.
CREATE INDEX idx_users_email ON users(email);
Sûr
CREATE UNIQUE INDEXCrée un index imposant également l'unicité des valeurs indexées.
CREATE UNIQUE INDEX idx_users_email_unique ON users(email);
Sûr
CREATE INDEX ... WHERECrée un index partiel uniquement sur les lignes correspondant à une condition.
CREATE INDEX idx_active_users ON users(email) WHERE active = true;
Sûr
CREATE INDEX ... USING GINCrée un index GIN, notamment utile pour certains usages de JSONB, tableaux et recherche plein texte.
CREATE INDEX idx_products_metadata ON products USING GIN(metadata);
Sûr
CREATE INDEX CONCURRENTLYConstruit un index en réduisant le blocage des écritures sur la table, au prix d'une opération généralement plus longue et avec des contraintes spécifiques.
CREATE INDEX CONCURRENTLY idx_users_created_at ON users(created_at);
Attention
REINDEXReconstruit un index.
REINDEX INDEX idx_users_email;
Attention
DROP INDEXSupprime un index existant.
DROP INDEX idx_users_email;
Attention

Analyse des performances

4 commandes
CommandeDescriptionExempleRisque
EXPLAINAffiche le plan d'exécution estimé d'une requête sans exécuter normalement la requête elle-même.
EXPLAIN SELECT * FROM users WHERE email = 'alice@example.com';
Sûr
EXPLAIN ANALYZEExécute réellement la requête et affiche le plan avec les mesures observées. Attention avec UPDATE, DELETE ou INSERT : les modifications sont réellement exécutées.
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'alice@example.com';
Attention
EXPLAIN (ANALYZE, BUFFERS)Ajoute notamment des informations sur l'utilisation des buffers au plan réellement exécuté.
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE user_id = 42;
Sûr
EXPLAIN (ANALYZE, BUFFERS, VERBOSE)Produit un diagnostic plus détaillé du plan d'exécution.
EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT * FROM orders WHERE user_id = 42;
Sûr

JSONB

5 commandes
CommandeDescriptionExempleRisque
->Extrait un champ ou élément JSON tout en conservant un résultat JSON.
SELECT metadata->'address' FROM users;
Sûr
->>Extrait une valeur JSON sous forme de texte.
SELECT metadata->>'language' FROM users;
Sûr
@>Teste si une valeur JSONB contient une autre structure JSONB.
SELECT * FROM users WHERE metadata @> '{"premium": true}'::jsonb;
Sûr
?Teste notamment l'existence d'une clé ou valeur de premier niveau dans un document JSONB.
SELECT * FROM users WHERE metadata ? 'premium';
Sûr
jsonb_setRemplace ou ajoute une valeur à un chemin donné dans un document JSONB.
UPDATE users SET metadata = jsonb_set(metadata, '{theme}', '"dark"'::jsonb) WHERE id = 42;
Attention

Utilisateurs & rôles

8 commandes
CommandeDescriptionExempleRisque
\duListe les rôles PostgreSQL.
\du
Sûr
\du+Liste les rôles avec des informations supplémentaires.
\du+
Sûr
CREATE ROLECrée un nouveau rôle PostgreSQL.
CREATE ROLE app_user;
Sûr
CREATE ROLE ... LOGINCrée un rôle autorisé à ouvrir une session PostgreSQL.
CREATE ROLE app_user LOGIN;
Sûr
CREATE ROLE ... PASSWORDCrée un rôle de connexion avec mot de passe. Éviter d'exposer le secret dans les historiques ou fichiers non protégés.
CREATE ROLE app_user LOGIN PASSWORD 'mot-de-passe-a-remplacer';
Attention
ALTER ROLEModifie les attributs d'un rôle.
ALTER ROLE app_user SET statement_timeout = '30s';
Attention
ALTER ROLE ... PASSWORDModifie le mot de passe d'un rôle de connexion.
ALTER ROLE app_user PASSWORD 'nouveau-secret';
Attention
DROP ROLESupprime un rôle lorsqu'aucun objet ou privilège bloquant ne l'empêche.
DROP ROLE app_user;
Danger

Permissions

9 commandes
CommandeDescriptionExempleRisque
\dpAffiche les privilèges associés aux tables, vues et séquences visibles.
\dp
Sûr
GRANT CONNECTAutorise un rôle à se connecter à une base.
GRANT CONNECT ON DATABASE application TO app_user;
Sûr
GRANT USAGE ON SCHEMAAutorise un rôle à accéder aux objets d'un schéma lorsqu'il possède également les privilèges nécessaires sur ces objets.
GRANT USAGE ON SCHEMA public TO app_user;
Sûr
GRANT SELECTAutorise la lecture d'une table.
GRANT SELECT ON TABLE products TO reporting_user;
Sûr
GRANT SELECT, INSERT, UPDATE, DELETEAccorde les principaux privilèges applicatifs sur une table.
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE users TO app_user;
Attention
GRANT ... ON ALL TABLESAccorde des privilèges sur toutes les tables existantes d'un schéma.
GRANT SELECT ON ALL TABLES IN SCHEMA public TO reporting_user;
Attention
ALTER DEFAULT PRIVILEGESConfigure les privilèges qui seront automatiquement accordés sur certains futurs objets créés par le rôle concerné.
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO reporting_user;
Attention
REVOKERetire un privilège précédemment accordé.
REVOKE INSERT ON TABLE users FROM reporting_user;
Attention
GRANT rôle TO rôleAccorde l'appartenance à un rôle à un autre rôle.
GRANT readonly TO alice;
Attention

Vues

5 commandes
CommandeDescriptionExempleRisque
\dvListe les vues.
\dv
Sûr
CREATE VIEWCrée une vue basée sur une requête.
CREATE VIEW active_users AS SELECT id, email FROM users WHERE active = true;
Sûr
CREATE MATERIALIZED VIEWCrée une vue matérialisée dont le résultat est stocké physiquement.
CREATE MATERIALIZED VIEW monthly_stats AS SELECT date_trunc('month', created_at) month, COUNT(*) FROM orders GROUP BY 1;
Sûr
REFRESH MATERIALIZED VIEWRecalcule le contenu d'une vue matérialisée.
REFRESH MATERIALIZED VIEW monthly_stats;
Attention
DROP VIEWSupprime une vue.
DROP VIEW active_users;
Attention

Import & export de données

3 commandes
CommandeDescriptionExempleRisque
\copy ... TOExporte des données depuis psql vers un fichier accessible par la machine cliente.
\copy users TO './users.csv' CSV HEADER
Sûr
\copy ... FROMImporte un fichier accessible par le client psql dans une table.
\copy users(email, username) FROM './users.csv' CSV HEADER
Attention
COPYImporte ou exporte des données côté serveur PostgreSQL. Les permissions et chemins concernent alors le serveur.
COPY users TO STDOUT WITH CSV HEADER;
Attention

Sauvegardes

7 commandes
CommandeDescriptionExempleRisque
pg_dumpEffectue une sauvegarde logique d'une base PostgreSQL.
pg_dump application > application.sql
Sûr
pg_dump -FcCrée une sauvegarde au format custom, particulièrement adaptée à une restauration avec pg_restore.
pg_dump -Fc -d application -f application.dump
Sûr
pg_dump --schema-onlySauvegarde uniquement la structure de la base.
pg_dump --schema-only application > schema.sql
Sûr
pg_dump --data-onlySauvegarde uniquement les données.
pg_dump --data-only application > data.sql
Sûr
pg_dump -tSauvegarde uniquement une table ou un ensemble correspondant au motif indiqué.
pg_dump -d application -t users > users.sql
Sûr
pg_dumpallProduit une sauvegarde logique de l'ensemble des bases d'un cluster et peut inclure les objets globaux.
pg_dumpall > cluster.sql
Sûr
pg_dumpall --globals-onlySauvegarde les objets globaux du cluster, notamment les rôles et tablespaces.
pg_dumpall --globals-only > globals.sql
Sûr

Restauration

5 commandes
CommandeDescriptionExempleRisque
psql < sauvegarde.sqlRestaure un dump SQL texte en exécutant ses instructions dans la base cible.
psql -d application_restore < application.sql
Attention
pg_restoreRestaure une archive créée par pg_dump dans un format pris en charge comme custom ou directory.
pg_restore -d application_restore application.dump
Attention
pg_restore --listAffiche le contenu d'une archive sans la restaurer.
pg_restore --list application.dump
Sûr
pg_restore --cleanSupprime les objets concernés avant de les recréer pendant la restauration.
pg_restore --clean -d application_restore application.dump
Danger
pg_restore -jUtilise plusieurs jobs parallèles lorsque le format et l'opération le permettent.
pg_restore -j 4 -d application_restore application.dump
Attention

Maintenance

7 commandes
CommandeDescriptionExempleRisque
VACUUMEffectue la maintenance des tuples devenus obsolètes et aide PostgreSQL à réutiliser l'espace correspondant.
VACUUM users;
Sûr
VACUUM ANALYZEEffectue un VACUUM puis met à jour les statistiques utilisées par le planificateur.
VACUUM ANALYZE users;
Sûr
ANALYZEMet à jour les statistiques utilisées pour choisir les plans d'exécution.
ANALYZE users;
Sûr
VACUUM VERBOSEExécute VACUUM en affichant davantage d'informations sur l'opération.
VACUUM VERBOSE users;
Sûr
VACUUM FULLRéécrit la table pour récupérer davantage d'espace disque mais nécessite un verrou exclusif et peut être coûteux.
VACUUM FULL users;
Danger
vacuumdbUtilitaire en ligne de commande permettant d'effectuer VACUUM et ANALYZE depuis le shell.
vacuumdb -d application --analyze
Sûr
reindexdbUtilitaire en ligne de commande permettant de reconstruire des index.
reindexdb -d application
Attention

Activité & connexions

4 commandes
CommandeDescriptionExempleRisque
pg_stat_activityVue système permettant d'observer les sessions et requêtes connues du serveur.
SELECT pid, usename, datname, state, query FROM pg_stat_activity;
Sûr
requêtes activesAffiche les sessions actuellement actives avec leur durée.
SELECT pid, now() - query_start AS duration, query FROM pg_stat_activity WHERE state = 'active' ORDER BY duration DESC;
Sûr
pg_cancel_backendDemande l'annulation de la requête actuellement exécutée par une session.
SELECT pg_cancel_backend(12345);
Attention
pg_terminate_backendDemande la terminaison d'une session PostgreSQL. Les transactions non validées de cette session seront annulées.
SELECT pg_terminate_backend(12345);
Danger

Taille & stockage

4 commandes
CommandeDescriptionExempleRisque
pg_database_sizeRetourne la taille occupée par une base de données.
SELECT pg_size_pretty(pg_database_size('application'));
Sûr
pg_total_relation_sizeRetourne la taille totale d'une relation en incluant notamment ses index et données auxiliaires concernées.
SELECT pg_size_pretty(pg_total_relation_size('users'));
Sûr
pg_relation_sizeRetourne la taille d'une relation ou d'un fork particulier selon l'utilisation.
SELECT pg_size_pretty(pg_relation_size('users'));
Sûr
taille des tablesClasse les tables utilisateur selon leur taille totale.
SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
Sûr

Extensions

4 commandes
CommandeDescriptionExempleRisque
\dxListe les extensions installées dans la base courante.
\dx
Sûr
CREATE EXTENSIONInstalle une extension disponible dans l'instance PostgreSQL.
CREATE EXTENSION IF NOT EXISTS pg_trgm;
Attention
ALTER EXTENSION UPDATEMet à jour une extension installée vers une version disponible compatible.
ALTER EXTENSION pg_trgm UPDATE;
Attention
DROP EXTENSIONSupprime une extension et peut affecter les objets qui en dépendent.
DROP EXTENSION pg_trgm;
Danger

psql pratique

7 commandes
CommandeDescriptionExempleRisque
\xActive ou désactive l'affichage étendu, très pratique pour les lignes possédant beaucoup de colonnes.
\x
Sûr
\x autoUtilise automatiquement l'affichage étendu lorsque le résultat est trop large pour l'affichage classique.
\x auto
Sûr
\eOuvre l'éditeur configuré afin de modifier une requête.
\e
Sûr
\iExécute les commandes contenues dans un fichier SQL.
\i migrations/001-init.sql
Attention
\oRedirige les résultats des requêtes suivantes vers un fichier.
\o resultat.txt
Sûr
\watchRépète périodiquement la dernière requête, pratique pour surveiller une métrique.
\watch 2
Sûr
\set ON_ERROR_STOP onDemande à psql d'arrêter l'exécution d'un script lorsqu'une erreur survient.
\set ON_ERROR_STOP on
Sûr

Diagnostic

7 commandes
CommandeDescriptionExempleRisque
\conninfoVérifie immédiatement à quel serveur, base et utilisateur la session est connectée.
\conninfo
Sûr
SELECT version()Vérifie la version exacte du serveur.
SELECT version();
Sûr
SHOW ALLAffiche les paramètres de configuration visibles dans la session.
SHOW ALL;
Sûr
SHOW statement_timeoutAffiche le délai maximal configuré pour les instructions dans la session.
SHOW statement_timeout;
Sûr
pg_stat_activityPermet d'observer les connexions, états et requêtes du serveur.
SELECT pid, usename, state, wait_event_type, wait_event, query FROM pg_stat_activity;
Sûr
EXPLAIN ANALYZEPermet de diagnostiquer les performances réelles d'une requête. Ne pas oublier que la requête est exécutée.
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE user_id = 42;
Attention
pg_blocking_pidsRetourne les PID des sessions bloquant une session donnée.
SELECT pid, pg_blocking_pids(pid) FROM pg_stat_activity WHERE cardinality(pg_blocking_pids(pid)) > 0;
Sûr

À manipuler avec prudence

8 commandes
CommandeDescriptionExempleRisque
DROP DATABASESupprime définitivement toute une base de données.
DROP DATABASE application;
Danger
DROP TABLESupprime définitivement la table et ses données.
DROP TABLE users;
Danger
TRUNCATEVide très rapidement une table.
TRUNCATE TABLE users;
Danger
DELETE sans WHERESupprime toutes les lignes d'une table.
DELETE FROM users;
Danger
UPDATE sans WHEREModifie toutes les lignes de la table.
UPDATE users SET active = false;
Danger
DROP SCHEMA CASCADESupprime le schéma et les objets qui en dépendent.
DROP SCHEMA ecommerce CASCADE;
Danger
VACUUM FULLPeut monopoliser la table pendant sa réécriture et doit être planifié avec attention sur une base utilisée.
VACUUM FULL users;
Danger
pg_terminate_backendInterrompt une session PostgreSQL et annule sa transaction non validée.
SELECT pg_terminate_backend(12345);
Danger
SUPER CALCULATEUR / CONNEXION ÉTABLIE

UN PASSAGE SECRET DANS DEV SEREIN

Bienvenue sur
Code Lyoko.

Le monde virtuel n’était qu’à quelques lettres.
Jérémie a ouvert la connexion. À toi de jouer.

Des arbres infinis, des chemins suspendus. Garde un œil sur la mer numérique.

LYOKO-GUERRIERS

Aelita · Yumi · Ulrich · Odd

SCAN DU TERRITOIREFORÊT / 01

ALERTE XANA · TOUR ACTIVÉE

On compte sur toi, Aelita.