Aller au contenu

PostgreSQL/Utilisation

Un livre de Wikilivres.

Création de base

[modifier | modifier le wikicode]
Créer une base de données dans PgAdmin

Dans pgAdmin, les commandes SQL sont disponibles dans l'icône de puzzle "PSQL console".

Par ailleurs, un clic droit sur le menu "Bases de données" à gauche, permet d'accéder à l'option "Ajouter une base de données". Cette dernière affiche dans un onglet "SQL" son équivalent en code :

CREATE DATABASE "WikibooksDB"
  WITH ENCODING='UTF8'
       CONNECTION LIMIT=-1;

Une fois la base sélectionnée, les boutons suivants se dégrisent :

  1. Affiche/éditer les propriétés de l'objet sélectionné.
  2. Supprimer l'objet sélectionné.
  3. SQL (un éditeur de requête).
  4. Maintenir la base ou la table courante.

Ligne de commande (Shell)

[modifier | modifier le wikicode]

Via le terminal, 2 choix apparaissent, soit écrire directement dans le shell:

createdb nom_database

Soit, il faudra d'abord se mettre sous le user postgres. Cela se fait tout simplement de la manière suivante:

su postgres

Puis, lancer PostgreSQL:

psql

Et ensuite créer une base de données en écrivant:

CREATE DATABASE nom_database;
-- Ou, pour ajouter la base de données pour un utilisateur spécifique:
CREATE DATABASE nom_database OWNER nom_utilisateur;

Pour s'y connecter, entrer simplement dans le terminal:

psql nom_database
# Ou, pour s'y connecter avec un utilisateur spécifique:
psql -d nom_database -U nom_utilisateur

Pour changer la base courante :

 SELECT current_database(); # postgres
 \connect root;
 SELECT current_database(); # root

Création de schéma

[modifier | modifier le wikicode]

Un schéma est un élément d'une base similaire à un espace de nom[1] : il peut contenir plusieurs tables et fonctions.

CREATE SCHEMA mon_schema

Création de table

[modifier | modifier le wikicode]
Créer une table dans PgAdmin

En dépliant le schéma public à gauche, un clic droit sur le menu "Table", "Ajouter table", il devient possible de remplir les différents onglets nécessaires. Cela équivaut en SQL à :

CREATE TABLE Livres (
    id        integer CONSTRAINT firstkey PRIMARY KEY,
    titre     varchar(255) NOT NULL
);

On peut ensuite la lire avec un clic droit dessus, View/Edit Data.

Ligne de commande (Shell)

[modifier | modifier le wikicode]

Après s’être connecté à une base de données, il suffira d'écrire :

CREATE TABLE Livres (
    id        integer CONSTRAINT firstkey PRIMARY KEY,
    titre     varchar(255) NOT NULL
);

L’indentation en ligne de commande est purement optionnelle, les instructions entrées ne seront que traitées après le ; final.

L'auto-incrémentation est assurée par :

SERIAL PRIMARY KEY

On suppose une table client dans le schéma operation.

INSERT INTO "operation"."client" (id, nom, prenom, code_postal, ville, pays) 
VALUES ('01234', 'Brochet', 'Pierre', 75001, 'Paris', 'France');

Insertion et retourne l'enregistrement inséré :

INSERT INTO "operation"."client" (id, nom, prenom, code_postal, ville, pays) 
VALUES ('01235', 'Laplace', 'Jean', 75006, 'Brest', 'France')
RETURNING *;
 SELECT * FROM "auth"."account" WHERE "account"."accountId" = 'SystemDepositor';

 UPDATE "auth"."account"
 SET "password" = 'xxx'
 WHERE "account"."accountId" = 'SystemDepositor';

Création de variables

[modifier | modifier le wikicode]

Utiliser "with"[2].

Pour définir un batch de backup quotidien, utiliser pg_dump.exe[3] en DOS. Par exemple, la commande suivante envoie un dump au format "aaaa-mm-jj-NomDeLaBase.sql" sur un serveur du réseau :

"C:\Program Files\PostgreSQL\bin\pg_dump.exe" -U Utilisateur1 -f "\\192.168.1.2\d$\Backup\%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%-MaBase1.sql" MaBase1

Restauration d'un fichier plat :

"C:\Program Files\PostgreSQL\bin\psql.exe" -U Utilisateur1 MaBase1 < "\\192.168.1.2\d$\Backup\2016-07-15-MaBase1.sql"

Restauration d'un fichier compressé :

"C:\Program Files\PostgreSQL\bin\pg_restore.exe" -U Utilisateur1 "\\192.168.1.2\d$\Backup\2016-07-15-MaBase1.sql"

Sauvegarde :

$ pg_dump --dbname=finance --username=boss --file=finance.sql

Restauration :

$ psql --dbname=finance_x --username=boss <finance.sql