C6 : Exercices
C6.E1 : Gestion d'un magasin
On considère la base de donnée constituée des deux tables suivantes :
| id_client | prénom | nom |
|---|---|---|
| 1 | Alain | Térieur |
| 2 | Jean | Naymar |
| 3 | Nadine | Greux |
| 4 | Alphonse | Danleuta |
| id_commande | client | date | montant |
|---|---|---|---|
| 1 | 1 | 2015-08-23 | 45 |
| 2 | 1 | 2015-09-25 | 102 |
| 3 | 4 | 2015-10-15 | 63 |
| 4 | 3 | 2015-10-29 | 113 |
| 5 | 2 | 2015-11-18 | 28 |
1) Donner le schéma de cette base de données.
2) Rédiger les requêtes qui permettent de répondre aux demandes suivantes :
- a) retourner la liste des noms et prénoms des clients ;
- b) retourner le nombre de commandes de plus de 100 € ;
- c) retourner la moyenne du montant des commandes
- d) retourner la liste des clients ayant passé une commande (sans doublon).
3) Rédiger les requêtes qui permettent de répondre aux demandes suivantes :
- a) retourner la liste des noms et prénoms et montants des commandes ;
- b) retourner liste des commandes (date et montant) du client dont le nom est "Térieur" et le prénom "Alain" ;
- c) retourner la liste des commandes (Nom, prénom, date et montant) par ordre croisant du montant.
C6.E2 : XYZ
On considère les trois tables suivantes :
| a | b |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |
| 4 | 2 |
| 5 | 1 |
| 6 | 9 |
| 7 | 1 |
| c | d |
|---|---|
| 9 | 9 |
| 10 | 10 |
| 11 | 9 |
| 12 | 20 |
| 13 | 30 |
| 14 | 9 |
| 15 | 1 |
| 16 | 10 |
| 17 | 10 |
| a | c | e |
|---|---|---|
| 1 | 11 | 30 |
| 2 | 14 | 9 |
| 5 | 15 | 1 |
| 7 | 17 | 3 |
| 1 | 10 | 50 |
| 2 | 9 | 8 |
| 2 | 15 | 15 |
| 3 | 17 | 19 |
| 4 | 16 | 12 |
| 5 | 10 | 20 |
| 1 | 11 | 30 |
| 7 | 14 | 9 |
| 7 | 9 | 12 |
Les trois tables ne contiennent que des valeurs entières.
Dans la table x :
- - clé primaire : a.
- - contrainte : b >= 0
Dans la table y :
- - clé primaire : c.
- - contrainte : d <= 30
Dans la table z :
- - l'attribut a est une clé étrangère de la table x,
- - l'attribut c est une clé étrangère de la table y.
Partie A - Requêtes d'interrogations
1) Donner le résultat de la requête suivante :
SELECT * FROM x WHERE b > 3
2) Donner le résultat de la requête suivante :
SELECT DISTINCT e FROM z WHERE e > 10 AND e < 50
3) Donner le résultat de la requête suivante :
SELECT * FROM y WHERE c % 2 = 0 ORDER BY d ASC
4) Donner le résultat de la requête suivante :
SELECT x.a, x.b
FROM x JOIN z ON z.a = x.a
WHERE z.e < 9
5) Donner le résultat de la requête suivante :
SELECT DISTINCT x.b, y.d
FROM x JOIN z ON z.a = x.a
Partie B - Requêtes de mise à jour
Pour chaque modification ci-dessous (modification effectuée sur les tables d'origine), indiquer si elle réussi ou si elle échoue. Si elle réussi, indiquer comment la table est modifiée. Si elle échoue, indiquer pourquoi.
1) UPDATE x SET b = b + a
2) UPDATE x SET b = b -2
3) INSERT INTO z VALUES (1, 17, 1)
4) INSERT INTO z VALUES (1, 18, 1)
5) INSERT INTO z VALUES (1, 10, 1)
6) DELETE FROM y WHERE c >= 12 AND c <= 13
7) DELETE FROM y WHERE c >= 12 AND c <= 14
8) INSERT INTO y VALUES (40, 20)
9) INSERT INTO y VALUES (20, 40)
10) DELETE FROM z WHERE a % 2 = 0 OR c % 2 = 0 OR e % 2 = 0