Thématiques principales

jeudi 28 septembre 2017

Postgres : commandes de base

Postgres est un système de gestion de base de données relationnelle et objet. Il permet la sauvegarde et l'exploitation de données métiers et/ou applicatives. C'est un produit libre sous licence BSD. 

Il supporte une grande partie du standard SQL et offres des nombreuses autres fonctionnalités telles que la capacité de réplication, la répartition de charge, le contrôle de version concurrentes, intégrité transactionnelle, les triggers, etc... Pour plus d’informations je vous invite a consulter sa documentation.

Enfin de part sa licence libre qui facilite sa démocratisation, s'il n'y a qu'un seul SGBDR a connaitre, c'est probablement celui-ci.

Connexion au shell psql

1
$ sudo -u postgres psql 

Creation d'un utilisateur pour l'etablissement d'une connexion vers une futur base de données

1
2
3
4
5
6
7
$ sudo -i -u postgres
$ createuser -P --interactive nom_utilisateur
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y

Suppression d'un utilisateur

1
2
$ sudo -i -u postgres
$ dropuser -U postgres nom_utilisateur

Creation/suppression d'une base de données associée a un utilisateur

1
2
3
$ sudo -i -u postgres
$ createdb -O nom_utilisateur -E UTF8 nom_de_la_db
$ dropdb -U nom_utilisateur nom_de_la_db

Execution d'une requette sur une base de données sur le compte de son l'utilisateur

1
$ sudo -u postgres psql -U nom_utilisateur nom_de_la_db -c requette

Sauvegarde d'une base de données

1
2
$ sudo -i -u postgres
$ pg_dump -f $PATH_SAVE/nom_de_la_base.sql nom_de_la_base 

 Restauration d'une base de données (attention la base doit avoir été recréer préalablement avec createdb)

1
$ sudo -u postgres psql -f $PATH_SAVE/nom_de_la_base.sql nom_de_la_base

Creation d'une table utilisateurs:

1
2
3
4
5
6
7
8
$ sudo -u postgres psql 
$ CREATE TABLE  utilisateurs (
 id SERIAL PRIMARY KEY,
 email varchar( 60 ) UNIQUE NOT NULL ,
 mot_de_passe varchar( 32 ) NOT NULL ,
 nom varchar( 20 ) NOT NULL ,
 date_inscription date NOT NULL
);

On pourra noté pour ceux qui sont plus habitué de MySQL que les requêtes SQL ne sont pas syntaxiquement identique. On reviendra sur ce "détail". Mais ici par exemple il faut savoir que SERIAL signifie juste "NOT NULL AUTO_INCREMENT"

Insersion de données dans la table

1
2
$ INSERT INTO utilisateurs (email, mot_de_passe, nom, date_inscription) VALUES ('moi@la.com', MD5('tutu'), 'BaMoi', NOW());
$ INSERT INTO utilisateurs (email, mot_de_passe, nom, date_inscription) VALUES ('toi@pas.la', MD5('utut'), 'EtToi', NOW());

Vérification de l’insertion

1
2
3
4
5
6
7
$ SELECT * FROM utilisateurs;

 id |   email    |           mot_de_passe           |  nom  | date_inscription
----+------------+----------------------------------+-------+------------------
  4 | moi@la.com | bdb8c008fa551ba75f8481963f2201da | BaMoi | 2017-09-27
  5 | toi@pas.la | 5c587bce24972d7a92e6cf1200f2001a | EtToi | 2017-09-27
(2 rows)

La vérification de la suppression nous renvoie le résultat suivant


1
2
3
4
5
6
$ delete from utilisateurs where id = 4;

 id |   email    |           mot_de_passe           |  nom  | date_inscription
----+------------+----------------------------------+-------+------------------
  5 | toi@pas.la | 5c587bce24972d7a92e6cf1200f2001a | EtToi | 2017-09-27
(1 row)

Aucun commentaire:

Enregistrer un commentaire