Découverte de PostgreSQL

Contexte

Durée : 2h

Environnement de travail : psql

Pré-requis : Aucun

Lorsque vous devez implémenter une base de données relationnelle, le choix peut être complexe. De nombreux systèmes de gestion de bases de données existent : MySQL, PostgreSQL, Oracle Database, SQL Server, etc.

Comment s'y retrouver ? Chaque système a en effet ses avantages et ses inconvénients : certains sont plus performants quand le volume de données est faible, d'autres sont payants, d'autres encore proposent des fonctionnalités spécifiques à certains domaines métiers, etc.

Tout au long de ces modules, vous apprendrez à installer et à manipuler PostgreSQL, un système de gestion de bases de données libre développé depuis 1996. Il est reconnu pour sa performance, adapté pour la plupart des usages et largement adopté par les éditeurs d'applications.

Présentation et installation de PostgreSQL

Objectif

  • Installer et mettre en service PostgreSQL sur un système Linux.

Mise en situation

PostgreSQL est un des systèmes de gestion de bases de données relationnelles les plus utilisés aujourd'hui.

Si une application web comme DBFiddle permet d'essayer des SGBD comme PostgreSQL et de vérifier la validité des requêtes SQL, elle n'est pas suffisante pour une « vraie » application.

En effet, une application réelle communique avec le SGBD grâce à du code, ce que ne permet pas l'interface de DBFiddle.

De plus, l'installation d'un SGBD sur une de vos machines permet de le configurer finement et d'optimiser les performances. Dans ce module, vous apprendrez à installer PostgreSQL sur un système Linux.

Avantage de PostgreSQL

PostgreSQL est :

  • un SGBDR,

  • libre (licence BSD),

  • multi-plate-formes (Unix, Linux, Windows, MacOS, etc.),

  • puissant,

  • très respectueux du standard SQL,

  • très bien documenté.

FondamentalDocumentation de PostgreSQL

La ressource de référence pour ce SGBDR mais aussi pour SQL est sa documentation :

Fonctionnement général

PostgreSQL comme la grande majorité des SGBD est un logiciel client-serveur. Sous Linux, le programme associé au serveur est postgresql. Il existe de nombreux autres clients, les deux plus utilisés sont le client textuel psql et le client graphique PgAdmin.

Attention

Une installation a minima de PostgreSQL uniquement à des fins de test et d'apprentissage, et pour un usage local est présentée ici. Pour mettre en production une base de données PostgreSQL sur le réseau, il faut suivre des directives supplémentaires, notamment pour assurer la sécurité du système, sa sauvegarde, etc. Ces thèmes ne sont pas abordés dans le cadre de ce module.

FondamentalInstallation de PostgreSQL

Une présentation complète de l'installation de PostgreSQL est disponible sur le document ici : https://www.postgresql.org/download/

ExempleInstallation sous Debian ou Ubuntu à partir des paquets de la distribution

Pour installer PostgreSQL sur des distribution de Linux de famille Debian comme Ubuntu, on peut exécuter la commande suivante en tant qu'administrateur :

apt-get update
apt install postgresql

La première commande met à jour les dépôt des paquets pour apt.

La seconde commande télécharge et installe le méta-package postgresql qui :

  • Installe le serveur postgresql et le client textuel psql (ainsi que le client graphique pgAdmin),

  • Lance le service postgresql,

  • Crée un utilisateur Linux postgres (que l'on peut voir dans /etc/passwd),

  • Crée également une base de données par défaut nommée postgres et un utilisateur par défaut pour le SGBD nommé postgres.

On peut voir l'état de fonctionnement du serveur postgresql avec la commande :

systemctl status postgresql.service

MéthodeTester son installation

sudo su postgres
psql
  • sudo su postgres permet de devenir l'utilisateur Linux postgres qui a été créé lors de l'installation.

  • psql permet d'établir la connexion par défaut entre le client psql et le serveur postgresql en utilisant l'utilisateur Linux et une base de données du même nom, donc ici postgres.

  • Le client connecté affiche son numéro de version, propose de taper help et une invite de commande postgres=#.

  • \l permet d'afficher la liste des base de données existantes (on retrouve la base postgres à laquelle on est connecté).

  • \q permet de quitter.

ComplémentCommande SHOW ALL ;

La commande SHOW ALL; permet de voir tous les paramètres du serveur PostgreSQL.

Par exemple data_directory permet de connaître le répertoire de stockage utilisé sur le disque dur.

Appliquer la notion

Installer PostgreSQL.

apt-get update
apt install postgresql
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  postgresql-doc
  The following NEW packages will be installed:
    postgresql
    0 upgraded, 1 newly installed, 0 to remove and 93 not upgraded.
    Need to get 5,392 B of archives.
    After this operation, 59.4 kB of additional disk space will be used.
    Get:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postgresql
    all 9.5+173ubuntu0.3 [5,392 B]
    Fetched 5,392 B in 0s (120 kB/s)
    debconf: delaying package configuration, since apt-utils is not installed
    Selecting previously unselected package postgresql.
    (Reading database ... 30282 files and directories currently installed.)
    Preparing to unpack .../postgresql_9.5+173ubuntu0.3_all.deb ...
    Unpacking postgresql (9.5+173ubuntu0.3) ...
    Setting up postgresql (9.5+173ubuntu0.3) ...

Comment obtenir des informations sur le statut du service PostgreSQL ?

systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2020-05-06 12:11:15 UTC; 2s ago
  Process: 6194 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 6194 (code=exited, status=0/SUCCESS)

Le service est bien chargé dans le système (Loaded: loaded) et il est bien actif (Active: active).

Le client textuel « psql »

Objectif

  • Savoir dialoguer avec PostgreSQL via un terminal.

Mise en situation

Une fois PostgreSQL installé sur votre système, il y a deux manières de l'utiliser.

La première est d'écrire du code qui communique directement avec PostgreSQL, et c'est ce que vous ferez si vous développez une application web.

La seconde est de dialoguer avec PostgreSQL à l'aide d'un terminal et de commandes SQL, comme vous le feriez avec un outil comme DBFiddle.

Pour ce faire, on utilisera le shell PosgtreSQL, ou psql.

Définitionpsql

psql est le client textuel de PostgreSQL. C'est une interface en ligne de commande ou CLI (pour command line interface).

Il permet une utilisation interactive de PostgreSQL.

MéthodeConnexion à un serveur

Le plus souvent, on interagit avec un serveur PostgreSQL distant. Pour initier la connexion avec psql, on utilise la commande suivante :

psql -h adresse.serveur -U user -d mydb

Cette commande opère la connexion avec la machine d'adresse adresse.serveur avec un utilisateur PostgreSQL nommé user à la base de données mydb.

Pour que cette commande fonctionne, il faut que :

  • Le serveur PostgreSQL s’exécute sur la machine d'adresse adresse.serveur (sur le port standard 5432) ;

  • L'utilisateur user existe sur PostgreSQL et avoir un mot de passe défini ;

  • Une base de données mydb existe sur PostgreSQL et que l'utilisateur user y ait accès ;

  • Le mot de passe de l'utilisateur user soit renseigné.

Lorsque l'on est connecté au serveur on obtient le prompt de la forme :

psql (9.5.21)
Type "help" for help.
user=>

À partir de là, on peut saisir des requêtes SQL mais aussi des commandes psql.

On sort de psql avec :

user=> \q

SyntaxeÉcrire une instruction SQL

Une requête SQL peut être directement exécutée. On veillera à ne pas oublier le point virgule « ; » qui indique la fin de celle-ci.

user=> SELECT * FROM matable ;

SyntaxeÉcrire une instruction SQL sur plusieurs lignes

Une instruction SQL peut s'écrire sur une ou plusieurs lignes, le « retour chariot » n'a pas d'incidence sur la requête, c'est le  « ; » qui marque la fin de l'instruction SQL et provoque son exécution.

user=> SELECT *
user-> FROM matable
user-> ;

On notera dans psql la différence entre les caractères « => » et « -> » selon que l'on a ou pas effectué un retour chariot.

FondamentalCommandes de base : aide

\? : Liste des commandes psql

\h : Liste des instructions SQL

\h CREATE TABLE : Description de l'instruction SQL CREATE TABLE

FondamentalCommandes de base  : catalogue

\d : Liste des relations (catalogue de données)

\d maTable : Description de la relation maTable

ComplémentDocumentation de psql

Pour obtenir toutes les options sur psql, on pourra se référer à la documentation de ce client ici :

https://docs.postgresql.fr/9.6/app-psql.html

ComplémentpgAdmin 4

Le client pgAdmin4 est un client graphique disponible sous Linux et sous Windows.

pgAdmin4 offre une interface graphique permettant d'effectuer les mêmes opérations qu'avec le client psql et offrant une navigation simplifiée et un monitoring facilité.

Appliquer la notion

Créer la table tabledetest avec pour seul attribut un id de type entier via psql en exécutant une requête SQL.

Lister les différentes tables présentes dans la base de données pour s'assurer de sa création.

On veillera à ne pas oublier le point-virgule pour exécuter la requête.

CREATE TABLE tabledetest (id INTEGER);

On peut ensuite lister les tables avec :

\d

on a :

            List of relations
 Schema |    Name     | Type  |  Owner
--------+-------------+-------+----------
 public | tabledetest | table | postgres
(1 row)

Supprimer maintenant cette table.

On supprime la table avec :

DROP TABLE tabledetest;

Comment peut-on avoir un aperçu du tampon ayant stocké la dernière requête ?

On parcourra la page de manuel de psql : https://docs.postgresql.fr/9.6/app-psql.html

On a le tampon de la dernière commande avec la commande \p ou \print.

postgres=# \p
DROP TABLE TableDeTest;

Créer des bases de données et des utilisateurs

Objectifs

  • Comprendre le concept d'utilisateur et de permissions au sens PostgreSQL.

  • Savoir créer des bases de données et des utilisateurs.

Mise en situation

Une installation PostgreSQL peut gérer plusieurs bases de données. Quand a-t-on besoin de plusieurs bases de données pour une même application ? Un grand classique consiste à utiliser une base de données pour les tests, et une base de données pour la production. Qui dit base de données différente dit aussi utilisateurs différents et autorisations différentes : on peut imaginer que la base de test soit accessible à plus d'utilisateurs que la base de production.

Sur PostgreSQL, une base et un utilisateurs nommés « postgres » sont créés par défaut. Dans ce module, vous apprendrez à créer de nouvelles bases et de nouveaux utilisateurs avec une syntaxe proche de SQL.

SyntaxeCréer un utilisateur

CREATE USER user1 PASSWORD 'password';

SyntaxeCréer une base de données

CREATE DATABASE mydb OWNER user1;

La clause OWNER permet de spécifier le propriétaire (owner) de la base de données. Celui-ci a tous les droits sur sa base de données. Il pourra créer, modifier et détruire les tables de le base de données.

Syntaxepsql : catalogues des utilisateurs et des bases de données

psql dispose de commandes pour consulter les catalogues des utilisateurs et des bases de données :

  • \du : liste des utilisateurs,

  • \l : liste des bases de données.

Syntaxepsql : changer d'utilisateur

Si on est connecté à une base de donnée avec un utilisateur et que l'on veut changer d'utilisateur et/ou de base, avec psql on utilise :

  • \c db user : pour se connecter à la base db avec le compte user.

Appliquer la notion

Cet exercice va permettre de découvrir la création de rôle et de psql.

On parcourra la page de manuel de psql: https://docs.postgresql.fr/9.6/app-psql.html

Créer un utilisateur nommé paul avec un mot de passe de votre choix et une base éponyme dont il est le propriétaire.

On utilise :

CREATE USER paul WITH PASSWORD 'wVyHZYpiRFzKK03jnrJJJADJ2IBsk1ufQfxwAexF/1U=';
CREATE DATABASE paul OWNER paul;

Lister les bases de données disponibles.

Quelle autre base de données d'un utilisateur différent apparaît ?

On utilise :

\l

On obtient :

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 paul      | paul     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

La base de données de l'utilisateur postgres apparaît aussi.

Changer le propriétaire de la base de données paul pour postgres.

On utilise :

ALTER DATABASE paul OWNER TO postgres;

Exécuter des instructions SQL depuis un fichier

Objectif

  • Savoir exécuter des instructions SQL depuis un fichier.

Mise en situation

Il est assez fréquent d'avoir une liste d'instructions SQL pré-définies à exécuter.

Vous pourriez recevoir le code SQL pour créer la structure d'une base de données à des fins de test, par exemple. Ou vous pourriez vouloir migrer une base de données de MySQL vers une base de données PostgreSQL, ce qui se traduira par l'exécution d'un long code SQL pour reconstruire la structure des tables et insérer les données dans PostgreSQL.

Dans ces cas, il est intéressant d'exécuter un fichier contenant une liste de requêtes SQL, plutôt que de les entrer une par une dans un client, ou de les copier-coller.

Syntaxe

La commande \i monfichier permet d'exécuter les commandes SQL contenues dans le fichier monfichier.

user=> \i chemin/fichier.sql 

MéthodeProgrammer une base de données avec PostgreSQL

Pour programmer une base de données sous PostgreSQL, voici une méthode générale :

  • Rendez-vous dans un répertoire de travail : cd /home/me/bdd1.

  • Créez ou ouvrez un fichier texte bdd.sql avec un éditeur de texte.

  • Ouvrez un terminal et exécutez votre client psql.

  • Écrivez votre code SQL, et testez-le au fur et à mesure : \i bdd.sql.

ConseilTester votre code régulièrement

Afin de tester régulièrement votre base de données, pensez à insérer en début de script des instructions de destruction des tables.

On supprime les tables dans l'ordre inverse de leur création, on peut ajouter la clause IF EXISTS afin d'éviter les erreurs lorsqu'une exécution précédente avait déjà échoué.

DROP TABLE IF EXISTS t2 ;
DROP TABLE IF EXISTS t1 ;
CREATE TABLE t1 (a VARCHAR PRIMARY KEY);
CREATE TABLE t2 (a VARCHAR REFERENCES t1(a));

Appliquer la notion

On se donne les données suivantes :

nom_film

num_salle

prix

date_projection

horaire_projection

I Origins

12

7.90

20 Mars 2020

13:37

Drive

47

8.90

15 Août 2020

13:45

Mr Nobody

12

16.90

4 Mai 2020

7:20

Écrire la requête permettant de créer cette table.

CREATE TABLE ticket(
nom_film VARCHAR(24) PRIMARY KEY,
num_salle INTEGER,
prix FLOAT(2),
date_projection DATE,
horaire_projection TIME
);

Écrire les requêtes permettant d'insérer les données.

On utilise :

INSERT INTO ticket VALUES('I Origins', 12, 7.90, '2020-03-20', '13:37');
INSERT INTO ticket VALUES('Drive', 47, 8.90, '2020-08-15', '13:45');
INSERT INTO ticket VALUES('Mr Nobody', 12, 16.90, '2020-05-04', '7:20');

Mettre en place un fichier film.sql qui permettra d'exécuter toutes ces requêtes en même temps et de lire le contenu de la table créée à la fin.

On veillera à supprimer la table en début de script si elle existe.

DROP TABLE IF EXISTS Ticket;
CREATE TABLE ticket(
nom_film VARCHAR(24) PRIMARY KEY,
num_salle INTEGER,
prix FLOAT(2),
date_projection DATE,
horaire_projection TIME
);
INSERT INTO ticket VALUES('I Origins', 12, 7.90, '2020-03-20', '13:37');
INSERT INTO ticket VALUES('Drive', 47, 8.90, '2020-08-15', '13:45');
INSERT INTO ticket VALUES('Mr Nobody', 12, 16.90, '2020-05-04', '7:20');
SELECT * FROM ticket;
 nom_film  | num_salle | prix | date_projection | horaire_projection 
-----------+-----------+------+-----------------+--------------------
 I Origins |        12 |  7.9 | 2020-03-20      | 13:37:00
 Drive     |        47 |  8.9 | 2020-08-15      | 13:45:00
 Mr Nobody |        12 | 16.9 | 2020-05-04      | 07:20:00
(3 rows)

Documentation de PostgreSQL

Objectif

  • Savoir trouver des informations sur SQL et PostgreSQL.

Mise en situation

Les systèmes de gestion de bases de données sont des outils complets et complexes. Si leur configuration par défaut suffit pour la plupart des usages, il est nécessaire de la modifier pour améliorer la performance de certaines applications. Des cas typiques pourraient être un grand volume de données, ou une base avec beaucoup de lectures et peu d'écritures, etc.

Lorsque l'on a un problème ou une question, se référer à la documentation de la technologie utilisée est le meilleur point de départ. La documentation officielle de PostgreSQL est la ressource la plus complète qui existe. Elle est disponible pour toutes les versions supportées de PostgreSQL.

FondamentalDocumentation en ligne

La documentation de PostgreSQL est hébergée sur un serveur dédié :

MéthodeFonction de recherche

La fonction de recherche de la documentation en ligne permet de chercher un mot-clé particulier pour une version ou toutes les versions de PostgreSQL.

FondamentalDocumentation en manuel

Une version de la documentation peut directement être consultée via le terminal avec :

apt install PostgreSQL-doc

On peut y avoir accès avec la commande :

man postgres

FondamentalDocumentation pdf

Une version de la documentation en disponible au format PDF en téléchargement en ligne ici : https://docs.PostgreSQL.fr/12/pg12.pdf

Chapitres sur SQL

La partie 2 contient des chapitres sur les spécificités de SQL auxquels on peut se référer lorsque l'on débute. En particulier, on se référera :

  • Au chapitre 4 sur la syntaxe SQL,

  • Au chapitre 5 sur la définition des données,

  • Au chapitre 6 sur la manipulation des données,

  • Au chapitre 7 sur les requêtes.

Chapitres sur PostgreSQL

La partie 3 contient des chapitres sur les spécificités de PostgreSQL auxquels on peut se référer lorsque l'on débute. En particulier, on se référera :

  • Au chapitre 19 sur la configuration du serveur,

  • Au chapitre 20 sur l'authentification du client,

  • Au chapitre 21 sur les rôles de la base de données,

  • Au chapitre 22 sur l'administration de la base de données.

Appliquer la notion

À quoi correspond le type cidr

La solution se trouve dans le chapitre 8.

C'est un type utilisé pour stocker une adresse réseau IPv4 ou IPv6.

À quoi sert un tablespace ?

La solution se trouve dans le chapitre 22.

Un tablespace sert à spécifier emplacements sur le disque d'une installation PostgreSQL.

Quel fichier stocke les informations pour l'authentification du client ?

La solution se trouve dans le chapitre 20.

Il s'agit du fichier pg_hba.conf.

Essentiel

L'installation de PostgreSQL sous Linux est très simple : en une seule commande, vous obtenez un système prêt à être utilisé à des fins de tests.

Le shell PostgreSQL, inclus dans l'installation, est très puissant. En plus d'autoriser l'exécution des requêtes SQL classiques, contenues dans un fichier ou entrées à la main, il permet de créer de nouvelles bases de données et de nouveaux utilisateurs.

PostgreSQL intègre également un systèmes de permissions, qui indique finement ce que les utilisateurs peuvent faire ou ne pas faire pour telle ou telle base de données.

Avant de mettre un production un système PostgreSQL, il faudra s'assurer que la configuration répond bien à vos besoins, et pour ce faire une documentation très complète est disponible en ligne ou directement depuis votre terminal.

Auto-évaluation

Exercice final

Quiz - Culture

Qu'est-ce qu'une CLI ?

Une interface en ligne de commande

Un type propre à PostgreSQL

Un utilisateur par défaut de PostgreSQL

Parmi les propositions suivantes, lesquelles sont des clients de PostgreSQL ?

psql

postgresql

pgAdmin4

Un client lourd est un client... :

Dont la taille une fois installé est plus importante que celle d'un client léger.

Qui repose sur les ressources de la machine qui l'utilise.

Est un client ancien qui n'est plus utilisé.

Quiz - Méthode

On crée généralement plusieurs utilisateurs... :

Pour partager l'usage du serveur entre plusieurs bases de données.

Pour avoir une gestion fine des droits.

Parce qu'il faut nécessairement un propriétaire pour une table.

Parce qu'il faut nécessairement un propriétaire différent pour chaque table.

On crée plusieurs bases de données... :

Car il en faut autant que de tables.

Car il en faut nécessairement une par utilisateur.

Pour permettre d'isoler différentes tables d'une application donnée.

Les bonnes premières choses à réaliser lors de la mise en place d'un serveur pour une application sont :

La création d'un nouvel utilisateur qui n'a pas tous les droits de l'utilisateur par défaut postgres.

La création d'une nouvelle base de données pour cette application.

Le changement du mot de passe de l'utilisateur par défaut postgres.

Quiz - Code

On exécute avec succès, via psql, cette instruction :

\copy fleur (variete, couleur) FROM '/tmp/orchidees.csv' WITH DELIMITER ','

Que peut-on en déduire ?

Une table fleur a été créé par cette instruction.

Il existe une table fleur avec au moins deux colonnes dans la base de données.

Les données d'un fichier CSV orchidees.csv ont été importées dans la table fleur.

Le nombre d'enregistrements dans la table fleur est égal au nombre d'enregistrements présents dans le fichier orchidees.csv.

Que permet de réaliser la commande : \timing sous psql ?

Elle indique le temps d'exécution de la dernière commande.

Elle active l'affichage du temps d'exécution des prochaines commandes.

Elle donne le temps d'exécution de toutes les commandes exécutées dans la session.

Que permet de réaliser la commande : \e sous psql ?

Elle permet d'éditer la dernière commande entrée dans la session psql via l'éditeur de texte par défaut.

Elle liste les paramètres du système qui ont été manuellement changés.

Elle liste tous les encodages utilisés dans la base de données courante.

Elle retourne la liste des événements importants de sécurité du SGBD.

Que permet de réaliser la commande : \H sous psql ?

Elle fournit de l'aide sur les commandes SQL.

Elle fournit de l'aide sur les commandes psql.

Elle présente les résultats des requêtes au format HTML.

Quiz - Culture

Qu'est-ce qu'une CLI ?

Une interface en ligne de commande

Un type propre à PostgreSQL

Un utilisateur par défaut de PostgreSQL

Parmi les propositions suivantes, lesquelles sont des clients de PostgreSQL ?

psql

postgresql

pgAdmin4

psql

postgresql

C'est le nom du programme serveur de PostgreSQL.

pgAdmin4

Un client lourd est un client... :

Dont la taille une fois installé est plus importante que celle d'un client léger.

Qui repose sur les ressources de la machine qui l'utilise.

Est un client ancien qui n'est plus utilisé.

Quiz - Méthode

On crée généralement plusieurs utilisateurs... :

Pour partager l'usage du serveur entre plusieurs bases de données.

Pour avoir une gestion fine des droits.

Parce qu'il faut nécessairement un propriétaire pour une table.

Parce qu'il faut nécessairement un propriétaire différent pour chaque table.

On crée plusieurs bases de données... :

Car il en faut autant que de tables.

Car il en faut nécessairement une par utilisateur.

Pour permettre d'isoler différentes tables d'une application donnée.

Les bonnes premières choses à réaliser lors de la mise en place d'un serveur pour une application sont :

La création d'un nouvel utilisateur qui n'a pas tous les droits de l'utilisateur par défaut postgres.

La création d'une nouvelle base de données pour cette application.

Le changement du mot de passe de l'utilisateur par défaut postgres.

Quiz - Code

Une table fleur a été créé par cette instruction.

Il existe une table fleur avec au moins deux colonnes dans la base de données.

Les données d'un fichier CSV orchidees.csv ont été importées dans la table fleur.

Le nombre d'enregistrements dans la table fleur est égal au nombre d'enregistrements présents dans le fichier orchidees.csv.

Une table fleur a été créé par cette instruction.

\copy ne crée pas la table, elle copie des données dans une table existante.

Il existe une table fleur avec au moins deux colonnes dans la base de données.

Les données d'un fichier CSV orchidees.csv ont été importées dans la table fleur.

Le nombre d'enregistrements dans la table fleur est égal au nombre d'enregistrements présents dans le fichier orchidees.csv.

Il est possible que des enregistrements étaient présents avant l'ajout de données.

Que permet de réaliser la commande : \timing sous psql ?

Elle indique le temps d'exécution de la dernière commande.

Elle active l'affichage du temps d'exécution des prochaines commandes.

Elle donne le temps d'exécution de toutes les commandes exécutées dans la session.

Que permet de réaliser la commande : \e sous psql ?

Elle permet d'éditer la dernière commande entrée dans la session psql via l'éditeur de texte par défaut.

Elle liste les paramètres du système qui ont été manuellement changés.

Elle liste tous les encodages utilisés dans la base de données courante.

Elle retourne la liste des événements importants de sécurité du SGBD.

Que permet de réaliser la commande : \H sous psql ?

Elle fournit de l'aide sur les commandes SQL.

Elle fournit de l'aide sur les commandes psql.

Elle présente les résultats des requêtes au format HTML.

Elle fournit de l'aide sur les commandes SQL.

C'est la commande \h (minuscule) qui fait cela.

Elle fournit de l'aide sur les commandes psql.

C'est la commande \? qui fait cela.

Elle présente les résultats des requêtes au format HTML.

Défi

On dispose des informations suivantes sur des étudiants :

etu

pknumsecu

knumetu

nom

prenom

1800675001066

AB3937098X

Dupont

Pierre

2820475001124

XGB67668

Durand

Anne

pknumsecu est une clé primaire qui contient exactement 13 caractères, knumetu est une chaîne de caractères d'au plus 20 caractères qui ne peut être nulle.

On dispose de plus des informations suivantes sur des cours :

cours

pkcode

fketu

NF17

1800675001066

NF26

1800675001066

NF29

1800675001066

pkcode est une chaîne de 4 caractères exactement et fketu est une clé étrangère référençant pknumsecu. Ces deux attributs forment la clé primaire.

Créer dans la base de données les tables etu et cours, et y ajouter les données.

CREATE TABLE etu (
  pknumsecu CHAR(13) PRIMARY KEY,
  knumetu VARCHAR(20) UNIQUE NOT NULL,
  nom VARCHAR,
  prenom VARCHAR
);
CREATE TABLE cours (
  pkcode CHAR(4) NOT NULL,
  fketu CHAR(13) NOT NULL,
  PRIMARY KEY (pkcode, fketu),
  FOREIGN KEY (fketu) REFERENCES etu(pknumsecu)
);
INSERT INTO etu (pknumsecu, knumetu, nom, prenom)
VALUES ('1800675001066', 'AB3937098X', 'Dupont', 'Pierre');
INSERT INTO etu (pknumsecu, knumetu, nom, prenom)
VALUES ('2820475001124', 'XGB67668', 'Durand', 'Anne');
INSERT INTO cours (pkcode, fketu)
VALUES ('NF17', '1800675001066');
INSERT INTO cours (pkcode, fketu)
VALUES ('NF26', '1800675001066');
INSERT INTO cours (pkcode, fketu)
VALUES ('NF29', '1800675001066');

Via psql, quelles sont les commandes pour accéder au catalogue et vérifier la création de la table ?

\d
\d etu
\d cours

Utiliser deux instructions SELECT pour vérifier le contenu de la table.

SELECT *
FROM etu;
SELECT *
FROM cours;

Nous allons à présent réinitialiser la base avec des données contenues dans un fichier.

Exécuter les instructions nécessaires afin de supprimer les données existantes dans les tables et non les tables.

Vérifier que les tables sont vides.

On utilisera l'instruction DELETE du SQL.

DELETE FROM cours;
SELECT * FROM cours;
DELETE FROM etu;
SELECT * FROM etu;

On dispose des deux fichiers de données suivants gi.csv et P2018.csv.

Téléchargez le fichier gi.csv sur votre ordinateur.

Téléchargez le fichier P2018.csv sur votre ordinateur.

Quel est le type de ce fichier et quelles informations contiennent-ils ?

Ce sont des fichiers CSV qui contiennent respectivement des informations sur les étudiants et sur les cours.

Exécuter le code suivant en remplaçant /tmp par l'emplacement des fichiers sur notre ordinateur.

\copy etu (pknumsecu, knumetu, nom, prenom) FROM '/tmp/gi.csv' WITH CSV DELIMITER ';' QUOTE '"'
\copy cours (fketu, pkcode) FROM '/tmp/P2018.csv' WITH CSV DELIMITER ';' QUOTE '"'

Montrer que de nouvelles données ont été insérées dans les tables etu et cours.

SELECT * 
FROM etu;
   pknumsecu   |  knumetu   |   nom    | prenom  
---------------+------------+----------+---------
 1800675001066 | AB3937098X | Dupont   | Pierre
 2820475001124 | XGB67668   | Durand   | Anne
 1             | A          | Dupont   | Pierre
 2             | B          | Durand   | Georges
 3             | C          | Duchemin | Paul
 4             | D          | Dugenou  | Alain
 5             | E          | Dupied   | Albert
SELECT * 
FROM cours;
 pkcode |     fketu     
--------+---------------
 NF17   | 1800675001066
 NF26   | 1800675001066
 NF29   | 1800675001066
 NF17   | 1            
 NF18   | 1            
 NF19   | 1            
 NF20   | 1            
 LA13   | 1            
 PH01   | 1            
 NF17   | 2            
 NF18   | 2            
 NF19   | 2            
 TN01   | 2            
 LA14   | 2            
 PH01   | 2            
 NF17   | 3            
 NF18   | 3            
 NF19   | 3            
 NF21   | 3            
 LA14   | 3            
 PH01   | 3 
Client

Un client est un programme informatique qui a pour fonction d'envoyer des requêtes à un autre programme informatique, appelé serveur, d'attendre le résultat de cette requête et de traiter le résultat de la requête. Notons qu'un programme peut-être client vis à vis d'un programme et serveur vis à vis d'un autre. On ne prend pas ici le terme client dans son acception matérielle, qui signifie alors un ordinateur qui a pour fonction d'héberger des programmes clients.

Serveur

Un serveur est un programme informatique qui a pour fonction de recevoir des requêtes d'un autre programme, appelé client, de traiter ces requêtes et de renvoyer en retour une réponse. Notons qu'un programme peut-être serveur vis à vis d'un programme et client vis à vis d'un autre. On ne prend pas ici le terme serveur dans son acception matérielle, qui signifie alors un ordinateur qui a pour fonction d'héberger des programmes serveurs.

Liste des raccourcis clavier

Liste des fonctions de navigation et leurs raccourcis clavier correspondant :

  • Bloc Suivant : flèche droite, flèche bas, barre espace, page suivante, touche N
  • Bloc Précédent : flèche gauche, flèche haut, retour arrière, page précédente, touche P
  • Diapositive Suivante : touche T
  • Diapositive Précédente : touche S
  • Retour accueil : touche Début
  • Menu : touche M
  • Revenir à l'accueil : touche H
  • Fermer zoom : touche Échap.