Peter Freitag vient de publier une fiche mémoire sur PostgreSQL dont voici la traduction. La version anglaise est disponible sur le site de Peter Freitag.

Fiche mémoire sur PostgreSQL

Créer une base de données

CREATE DATABASE nom_base;

Créer une table (avec un identifiant incrémenté automatiquement)

CREATE TABLE nom_table ( 
id serial PRIMARY KEY,
nom varchar(50) UNIQUE NOT NULL,
date_creation timestamp DEFAULT current_timestamp
);

Ajouter une clé primaire

ALTER TABLE nom_table ADD PRIMARY KEY (id);

Créer un index

CREATE UNIQUE INDEX nom_index ON nom_table (noms_colonnes);

Sauvegarder une base de données (ligne de commande)

pg_dump nom_base > nom_base.sql

Sauvegarder toutes les bases de données (ligne de commande)

pg_dumpall > sauvegarde_pg.sql

Lancer un script SQL (ligne de commande)

psql -f script.sql nom_base

Rechercher via une expression rationnelle

SELECT colonne FROM table WHERE colonne ~ 'truc.*';

Les N premiers enregistrements

SELECT colonnes FROM table LIMIT 10;

Pagination

SELECT colonnes FROM table LIMIT 10 OFFSET 30;

Instructions préparées

PREPARE insertion_preparee (int, varchar) AS
INSERT INTO nom_table (colonne_int, colonne_char) VALUES ($1, $2);
EXECUTE insertion_preparee (1,'a');
EXECUTE insertion_preparee (2,'b');
DEALLOCATE insertion_preparee;

Créer une fonction

CREATE OR REPLACE FUNCTION mois (timestamp) RETURNS integer 

AS 'SELECT date_part(''month'', $1)::integer;'

LANGUAGE 'sql';

Maintenance d'une table

VACUUM ANALYZE table;

Ré-indexer une base de données, une table ou un index

REINDEX DATABASE nom_base;

Afficher le plan de requête

EXPLAIN SELECT * FROM table;

Importer un fichier

COPY table_destination FROM '/tmp/un_fichier';

Afficher tous les paramètres d'exécution

SHOW ALL;

Donner tous les droits à un utilisateur

GRANT ALL PRIVILEGES ON table TO nom_utilisateur;

Exécuter une transaction

BEGIN TRANSACTION 
UPDATE comptes SET balance += 50 WHERE id = 1;
COMMIT;

SQL de base

Obtenir toutes les colonnes et lignes d'une table

SELECT * FROM table;

Ajouter une nouvelle ligne

INSERT INTO table (colonne1,colonne2)

VALUES (1, 'un');

Mettre à jour une ligne

UPDATE table SET truc = 'machin' WHERE id = 1;

Supprimer une ligne

DELETE FROM table WHERE id = 1;


S'imprime sur deux pages. Document en cours de construction - Questions, commentaires, critiques ou requêtes (en anglais) à adresser ici

Copyright © 2005 Peter Freitag (http://www.petefreitag.com/), All Rights Reserved.
Ce document peut être imprimé librement aussi longtemps que cette notice reste intacte.