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.

Question

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

Solution

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

Question

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

Solution

1
\d
2
\d etu
3
\d cours

Question

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

Solution

1
SELECT *
2
FROM etu;
1
SELECT *
2
FROM cours;

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

Question

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.

Indice

On utilisera l'instruction DELETE du SQL.

Solution

1
DELETE FROM cours;
2
SELECT * FROM cours;
3
4
DELETE FROM etu;
5
SELECT * FROM etu;

Question

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 ?

Solution

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

Question

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

1
\copy etu (pknumsecu, knumetu, nom, prenom) FROM '/tmp/gi.csv' WITH CSV DELIMITER ';' QUOTE '"'
2
\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.

Solution

1
SELECT * 
2
FROM etu;
1
   pknumsecu   |  knumetu   |   nom    | prenom  
2
---------------+------------+----------+---------
3
 1800675001066 | AB3937098X | Dupont   | Pierre
4
 2820475001124 | XGB67668   | Durand   | Anne
5
 1             | A          | Dupont   | Pierre
6
 2             | B          | Durand   | Georges
7
 3             | C          | Duchemin | Paul
8
 4             | D          | Dugenou  | Alain
9
 5             | E          | Dupied   | Albert
1
SELECT * 
2
FROM cours;
1
 pkcode |     fketu     
2
--------+---------------
3
 NF17   | 1800675001066
4
 NF26   | 1800675001066
5
 NF29   | 1800675001066
6
 NF17   | 1            
7
 NF18   | 1            
8
 NF19   | 1            
9
 NF20   | 1            
10
 LA13   | 1            
11
 PH01   | 1            
12
 NF17   | 2            
13
 NF18   | 2            
14
 NF19   | 2            
15
 TN01   | 2            
16
 LA14   | 2            
17
 PH01   | 2            
18
 NF17   | 3            
19
 NF18   | 3            
20
 NF19   | 3            
21
 NF21   | 3            
22
 LA14   | 3            
23
 PH01   | 3