Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

BD SQL

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

ENSAH / UAE

BDD / ID1 – A.U. : 2022/2023

Le langage SQL
Feuille d'exercices n°4
Exercice (1) :
L’objectif de cette partie est d’évaluer votre niveau théorique en matière de SQL.
Ci-dessous, le contenu ainsi que le descriptif des tables concernées par l’évaluation :
COURSES : contient la liste des différents cours (matières) donnés.
SESSIONS : contient tous les cours donnés à une certaine date et place.
PERSONS : toutes les personnes, qu’elles soient formateurs, participants ou autres.
ENROLMENTS: contient l’information sur les inscriptions aux sessions.
Contenu des tables :
Table Courses :

CID CTITLE CDUR


7890 DB2 5
7910 Unix 4
8500 Oracle 5
8000 SQLServer 5
9000 SQL workshop 3
Où :
CID : numéro de cours (Clé primaire)
CTITLE : titre du cours
CDUR : durée du cours
La table SESSIONS :

SNO S_CID SDATE SINS_PNO SCANCEL


10 7890 2005-12-02 3 NULL
11 7910 2005-11-04 1 NULL
12 7890 2006-01-08 3 C
13 7890 2006-02-02 3 NULL
14 8000 2006-04-05 2 C
15 7910 2006-01-08 36 C
16 8500 2006-04-05 36 NULL
17 9000 2006-06-07 36 NULL
Où :
SNO : numéro de session (Clé Primaire)
S_CID : numéro du cours donné lors d’une session particulière (clé étrangère faisant référence à la table COURSES).
SDATE : date de début d’une session particulière
SINS_PNO : personne qui est désignée comme formateur pour une session particulière (clé étrangère vers la table
PERSONS).
SCANCEL : indique si une session est annulée ou pas (“C” signifie que la session est annulée, vide (NULL) signifie pas
annulée).

Page 1 sur 4
ENSAH / UAE
BDD / ID1 – A.U. : 2022/2023

Table PERSONS :

PNO PNAME P_CONO


1 SMITHS 3
2 TAVERNIER 3
3 DE KEYSER 3
4 HEBBELYNCK 5
5 VAN DE BROECK 5
6 VAN HEIJKOOP 10
7 DE WINDT 2
8 SPENSER 10
9 BENOIT 1
10 BENOIT 1
11 LOSSE NULL
13 PARKER 6
15 DEHLEM 7
17 PIELAGE 4
18 GELADE 2
33 BUENK 9
36 ADAMSON 8
45 MOORS 4
50 MAK NULL
Où :
PNO: numéro de personne (clé primaire)
PNAME: nom de la personne
P_CONO: société pour laquelle une personne travaille.

Table ENROLMENTS :

E_SNO E_PNO ECANCEL


10 4 NULL
10 7 C
11 45 NULL
11 13 NULL
12 4 NULL
13 15 C
13 36 NULL
14 3 NULL
14 18 C
14 1 NULL
15 4 NULL
15 7 NULL
16 3 NULL
16 18 NULL
Où :
E_SNO: session pour laquelle une inscription est enregistrée (clé étrangère vers
SESSIONS) (partie de la clé primaire, avec E_PNO).
E_PNO: personne inscrite (clé étrangère vers PERSONS).
ECANCEL: indique si une inscription est annulée ou pas (“C” signifie que l’inscription est annulée, NULL signifie non
annulée).

Page 2 sur 4
ENSAH / UAE
BDD / ID1 – A.U. : 2022/2023

Questions :
Choisir la bonne réponse pour chacune des questions suivantes :
1. Lesquelles des requêtes suivantes produisent exactement 1 ligne de résultat ?
a) SELECT COUNT(*)
FROM PERSONS
WHERE PNO > 100

b) SELECT PNO, COUNT(*)


FROM PERSONS
WHERE PNO = 2

c) SELECT COUNT(*)
FROM PERSONS
GROUP BY PNO

2. Qu’est-ce qu’on peut dire de la requête suivante ?


SELECT CTITLE
FROM SESSIONS
WHERE S_CID = '7820'y

a) La requête ne peut pas être exécutée (donne une erreur syntaxique).


b) La requête est exécutable et sensée (selon les définitions des colonnes).
c) La requête est exécutable mais insensée.
3. Quelle question correspond le mieux à la requête suivante ?
SELECT P_CONO, COUNT(*)
FROM PERSONS
WHERE EXISTS (SELECT SNO
FROM SESSIONS
WHERE SINS_PNO = PERSONS.PNO)
GROUP BY P_CONO

a) Donnez par entreprise, le nombre de personnes qui ont déjà suivi au moins un cours.
b) Donnez le nombre de sessions par cours, ainsi que l’entreprise où le formateur travaille.
c) Donnez le nombre de formateurs par entreprise.
4. Quelle requête fournit les informations demandées par la question suivante ?
Donnez une liste de tous les cours qui ont eu lieu (ou auront lieu) au moins deux fois
a) SELECT S_CID, COUNT(*)
FROM SESSIONS
WHERE SCANCEL IS NULL AND COUNT(*) >= 2

b) SELECT S_CID, COUNT(S_CID)


FROM SESSIONS
WHERE SCANCEL IS NULL
GROUP BY S_CID
HAVING COUNT(*) >=2

c) SELECT S_CID, COUNT(*)


FROM SESSIONS
GROUP BY S_CID
HAVING COUNT(SCANCEL) = 0

5. Quelle requête fournit les informations demandées par la question suivante ?

Page 3 sur 4
ENSAH / UAE
BDD / ID1 – A.U. : 2022/2023

Donnez, par numéro de cours, la liste de sessions, et indiquez celles qui sont annulées ou pas. Triez le résultat par cours
et par la colonne SCANCEL.
a) SELECT S_CID, SNO, SCANCEL
FROM SESSIONS
ORDER BY S_CID, SCANCEL
b) SELECT S_CID, SNO, SCANCEL
FROM SESSIONS
GROUP BY S_CID
ORDER BY SCANCEL
c) SELECT S_CID, SNO, SCANCEL
FROM COURSES, SESSIONS
ORDER BY CID, SCANCEL, SNO
6. Quelle table est le résultat de la requête suivante?
SELECT S_CID, MAX(SNO)
FROM SESSIONS
GROUP BY S_CID
ORDER BY 2

a)
S_CID MAX(SNO)
7890 13
7910 15
b)
S_CID MAX(SNO)
9000 17

c)
SCID MAX(SNO)
7890 13
8000 14
7910 15
8500 16
9000 17

7. Combien de lignes seront produites par la requête suivante ?


SELECT DISTINCT PNO
FROM PERSONS, ENROLMENTS where PNO = E_PNO

a) 9
b) 14
c) 19
Exercice (2) :
1.Créer les tables suivantes :
Client (client _id, prenom, nom, email, ville, password)
Commande (commande_id, #client_id, date_achat, reference, cache_prix_total)
Commande_ligne (id, #commande_id, nom, quantite, prix_unitaire, prix_total)
▪ Tous les champs sont obligatoires.
2.Insérer les enregistrements des tables Client, commande, commande_ligne.
3. Ecrire les scripts SQL qui permettent d’obtenir les informations suivantes :
▪ Les noms, les prénoms des clients de ville ‘Toulouse’.
▪ La liste des produits (Nom, prix) classés de plus cher au moins cher.
▪ Noms et emails des clients dont le nom commence par la lettre ‘D’.
▪ La liste de tous les produits qui sont présent sur plusieurs commandes.
▪ Le montant total des commandes pour chaque date.
▪ La liste des commandes effectuées par le client " Collin" entre le 1er et 30 janvier 2019.
▪ La liste des 10 clients qui ont effectué le plus grand montant de commandes, et obtenir ce montant total pour
chaque client.

Page 4 sur 4

Vous aimerez peut-être aussi