Tuto vidéo en anglais

Installation Postgresql

sudo apt update
sudo apt install postgresql postgresql-contrib

Lancer Postgresql en tant qu’utilisateur postgres

La procédure d'installation a créé un compte utilisateur nommé postgres qui est associé au rôle Postgres par défaut. Pour utiliser Postgres, vous pouvez vous connecter à ce compte.

sudo -u postgres psql

Quitter la session Postgres :

postgres=# \q

Rôles

Par défaut, Postgres utilise la notion de « rôles » pour gérer l'authentification et l'autorisation. Ils sont, à certains égards, semblables aux comptes classiques de type Unix, mais Postgres ne fait pas de distinction entre utilisateurs et groupes et préfère le terme plus souple de « rôle ».

Création d'un rôle

Alors que vous n'êtes pas loggé à une session postgres, entrez l'instruction suivante pour créer un nouveau rôle (utilisateur) :

sudo -u postgres createuser --interactive --pwprompt

Installation PGADMIN :

Tuto : https://computingforgeeks.com/how-to-install-pgadmin4-on-debian/

sudo apt install -y vim wget
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
RELEASE=$(lsb_release -cs)
echo "deb http://apt.postgresql.org/pub/repos/apt/ ${RELEASE}"-pgdg main | sudo tee  /etc/apt/sources.list.d/pgdg.list
sudo apt update
sudo apt -y install pgadmin4 pgadmin4-apache2
sudo ufw allow http
sudo ufw allow https

Lancer pgadmin 

Lancer le serveur comme un logiciel classique, cela va ouvrir votre navigateur par défaut à l’adresse : 
http://127.0.0.1:39385/browser/

Création d'un "serveur" sous pgadmin

Au premier lancement de pgAdmin 4, un groupe de serveurs, vide, est paramétré. Cet objet apparaît dans le volet gauche de l’interface. L’objet groupe de serveurs dans pgAdmin, est un conteneur d’organisation de l’affichage. Il ne correspond pas à un objet réel du serveur de base de données. On va commencer par donner un nom significatif à cet objet:

pgadmin - 1

Dans mon cas, j'ai appelé le nouveau serveur "memo".

pgadmin 2

... pour que cela fonctionne, il faut :

  • renseigner l'adresse de l'host (localhost ici)
  • avoir déjà créé un utilisateur (cf plus haut : yvan dans mon exemple) avec un mot de passe

pgadmin 3

Création d'une base de données

Au click droit sur "Database"

create database 1

... donner le nom de la base de donnée (memo ici)  ainsi que son propriétaire (yvan ici)

create database 2

... l'ongelt "SQL" indique le code SQL qui sera exécuté

create database 3

Créer un schema

Dans une première approche, un schéma peut être vu comme un espace de nommage. Il permet de regrouper ensemble des tables plutôt que d’avoir un espace unique les regroupant toutes. Le fait de placer des tables dans des schémas différents n’empêche en rien de les relier entre elles en créant des jointures ou des contraintes d’intégrité.

C’est déjà très bien : avec ce principe, il est possible de regrouper ensemble des tables qui sont fonctionnellement proches. Mais les schémas présentent également d’autres avantages. Il est ainsi possible d’indiquer des droits différents, et donc d’autoriser des opérations différentes selon les profils des utilisateurs.

Les schémas existent depuis probablement le début des bases de données relationnelles. Ils ont rarement été utilisés jusqu’ici, et certaines bases de données, comme MySql, ne disposent pas de cette finesse : les bases de données et les schémas sont fusionnés en un seul type d’objet, appelé schéma.

schema

Créer une table

table

Créer des champs

fields

Voir le SQL généré :

CREATE TABLE memo."user"
(
    u_id integer NOT NULL,
    u_email character(255) NOT NULL,
    u_pwd character(120) NOT NULL,
    PRIMARY KEY (u_id)
)
WITH (
    OIDS = FALSE
);

ALTER TABLE memo."user"
    OWNER to yvan;

Création d'une clé étrangère

Cliquer droit sur le lien "Constraints > Create > Foreign Key"

fk


Donnez un nom à votre clé étrangère

fk

Faites le choix des champs à mettre en relation. Attention, il faut que :

  • les deux tables existent déjà
  • vous ayez déjà créer un champ adhoc (c_user ici) sur la table qui fait référence à l'id de la table étrangère
  • vous n'oubliez pas de cliquer sur le bouton "+" en face de Columns
  • vous n'oubliez pas de cliquer sur le bouton "save"

fk

Code SQL généré :

ALTER TABLE memo.card
    ADD CONSTRAINT c_user FOREIGN KEY (c_user)
    REFERENCES memo."user" (u_id) MATCH SIMPLE
    ON UPDATE NO ACTION
    ON DELETE RESTRICT
    NOT VALID;
CREATE INDEX fki_c_user
    ON memo.card(c_user);

Insérer un enregistement (insert row or record)

insert

Attention, avec la version de pgAdmin que j'utilise, le bouton de sauvegarde n'est pas évident à repérer (entouré en rouge dans l'image ci-dessous)

insert 2 pgadmin

Exécuter une requête :

Ouvrir Tools > Query Tool

select 1

... puis écrire le code SQL et cliquer sur la flèche noire en haut à droite pour exécuter le code SQL :

select 2