0% ont trouvé ce document utile (0 vote)
74 vues4 pages

Requêtes SQL pour gestion de magasin

Le document présente un projet de gestion d'un système d'information pour un magasin, incluant la modélisation de la base de données DBMagasin avec plusieurs tables. Il contient des requêtes SQL demandées pour extraire des informations, effectuer des calculs arithmétiques, manipuler des chaînes de caractères, traiter des conditions, utiliser des agrégats, réaliser des jointures, et utiliser des sous-requêtes. Enfin, il aborde des requêtes ensemblistes pour récupérer des données spécifiques sur les clients et les employés.

Transféré par

datenshiyu
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
74 vues4 pages

Requêtes SQL pour gestion de magasin

Le document présente un projet de gestion d'un système d'information pour un magasin, incluant la modélisation de la base de données DBMagasin avec plusieurs tables. Il contient des requêtes SQL demandées pour extraire des informations, effectuer des calculs arithmétiques, manipuler des chaînes de caractères, traiter des conditions, utiliser des agrégats, réaliser des jointures, et utiliser des sous-requêtes. Enfin, il aborde des requêtes ensemblistes pour récupérer des données spécifiques sur les clients et les employés.

Transféré par

datenshiyu
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ENSAM AIDT UMI

TP°1 SQL
On souhaite gérer le système d’information d’un magasin. Le service informatique a pu modéliser
ce système en créant le MCD et le MLD-R. L’équipe a renseigné les différentes informations dans
une base de données qui porte le nom de DBMagasin, dont elle contient les relations ci-dessous.

• Categorie(CodeCateg,NomCateg, Description)
• Messager(NoMess, NomMess, Tel)
• Employe(NoEmp, Nom, Prenom, Fonction, TitreCourtoisie, DateNaissance,
DateEmbauche, Adresse, Ville, Region, Codepostal, Pays, TelDom , Extension,
RendCompteA)
• Fournisseur(NoFour, Societe, Contact, Fonction, Adresse, Ville, Region, CodePostal,
Pays, Te , Fax, PageAccueil)
• Client(CodeCli, Societe, Contact, Fonction, Adresse, Ville, Region, CodePostal, Pays,
Tel, Fax)
• Produit(Refprod, Nomprod, #NoFour, #CodeCateg, QteParUnit, PrixUnit, UnitesStock,
UnitesCom, NiveauReap, Indisponible)
• Commande( NoCom, #CodeCli, #NoEmp, DateCom, ALivAvant, DateEnv, NoMess, Port,
Destinataire, AdrLiv, VilleLiv, RegionLiv, CodepostalLiv, PaysLiv)
• DetailCommande(Nocom, #Refprod, PrixUnit, Qte, Remise)

Le manager vous demande de tirer plusieurs informations de cette base de données dont ces
questions sont mentionnées ci-dessous. Donner les requêtes SQL permettant de tirer ces
informations.

Requêtage simple :

1. Récupérer les n-tuples de l’ensemble des tables.


2. Sélectionner seulement les 10 premiers clients de la table client.
3. Sélectionner l’ensemble des employés en les ordonnant par leur nom d’une façon
descendante, puis par leurs fonction et nom.
4. Inverser le nom et la fonction, qu’est-ce que vous remarquez ?
5. Sélectionner les employés ayant comme fonction représentant.
6. Sélectionner les employés qui ne sont pas représentant.
7. Donner la liste des employés masculins ayant comme fonction représentant avec un
numéro d’employé inférieur strictement à 8.
8. Exécuter la requête suivante : SELECT * FROM Employe WHERE UPPER(Ville) =
"SEATTLE";
a. Changer UPPER par LOWER : Qu’est-ce que vous remarquez ?
b. SEATTLE par seattle : qu’est-ce que vous remarquez ?
9. Sélectionner l’ensemble des employés dont la région n’est pas renseignée.
10. Sélectionner l’ensemble des employés dont la région est renseignée.
11. Sélectionner l’ensemble des employés ayant comme numéro d’employé une valeur
comprise entre 3 et 8.
12. Sélectionner l’ensemble des employés ayant comme titreCourtoisie ‘Mlle’ ou ‘Mme’.
13. Sélectionner l’ensemble des clients ayant un nom qui contient 5 lettres.
14. Sélectionner l’ensemble des employés que leurs noms commencent par D.

Pr. Hosni M. 1
ENSAM AIDT UMI

15. Sélectionner les noms et les prénoms des employés.


16. Sélectionner les fonctions des employés.

Calculs arithmétiques :

1. Créer une requête qui permet de sélectionner l’ensemble de produit et additionne les
unités en stock et les unités commandée
2. Modifier la requête précédente en renommant la colonne UnitesStock + UnitesCom en
Unités disponibles.
3. Modifier la requête précédente affichant seulement la référence du produit.
4. Créer une requête qui permet d’afficher la référence du produit et calculer le montant du
stock.
5. Créer une requête qui permet de calculer le montant du stock des produits qui ont plus
de 10 unités.
6. Créer une requête qui permet d’augmenter le prix des produits par 5%, il faut arrondir le
résultat.

Fonctions sur chaînes de caractères :

1. Sélectionner le nom et le prénom des employés dans une seule colonne.


2. Sélectionner le nom et la première lettre des employé suivis par un (.) dans une seule
colonne.
3. Modifier la requête précédente en rendant le nom en majuscule.
4. Sélectionner le nom et la taille du nom de chaque employé.
5. Sélectionner le nom et l’adresse des employés que leur adresse contient le mot (Ave.).

Traitement conditionnel :

1. Afficher les titres de courtoisie au complet pour "Mlle", "Mme" et "M.", et garder Pour
"Dr.". En affichant le numéro d’employé, nom, prénom et le titre courtoisie.
2. Afficher un message de Réapprovisionnement selon le niveau de stock pour chaque
produit, si le stock est 0 on affiche épuiser, sinon on utilise la valeur stockée dans
NiveauReap pour créer le message. Il faut afficher la référence du produit, le nom du
produit et le niveau de Réapprovisionnement
3. On désir afficher la gamme des produits selon leurs prix unitaire :
a. Si le prix est inférieur ou égal à 50, alors le produit est considéré dans la gamme
des petits prix.
b. S'il est inférieur ou égal à 500 et si oui, le produit sera dans la gamme moyenne.
c. Par défaut, le produit sera dans la gamme de luxe.
Créer une requête qui permet d’afficher la référence du produit, nom du produit, prix
unitaire et sa gamme.
4. On désire afficher un message en fonction de l'action à réaliser ou non pour le
réapprovisionnement.
a. Si le produit a déjà été commandé (i.e. UnitesCom > 0), alors on l'indique.
b. Par contre, s'il ne l'est pas mais que le stock est inférieur au niveau de
réapprovisionnement, alors on indique qu'il faut commander le produit.
c. Pour les produits qui ne sont plus en stock (et dont le niveau de
réapprovisionnement est égal à 0), on indique juste qu'il n'y a plus de produits à
disposition.
d. Pour les autres, il n'y a, a priori, rien à faire.

Pr. Hosni M. 2
ENSAM AIDT UMI

Créer une requête qui permet de lister : référence du produit, unité en stock, unité
commandé, niveau de réapprovisionnement, et l’action à prendre.

Agrégats :

1. Donner le nombre des n-tuples de chaque relation.


2. Donner le nombre des codes client.
3. Donner le nombre des pays des clients.
4. Donner le nombre des clients qui résident en France.
5. Donner le nombre total d’unités de produit en stock.
6. Donner le nombre d'unités en stock pour tous les produits de la catégorie 1.
7. Donner le prix unitaire moyen des produits.
8. Donner le prix unitaire médiane des produits.
9. Donner le prix maximum et minimum des produits.
10. Donner le nombre des clients par pays.
11. Donner les pays ayant plus que 10 clients.

Jointure :

1. Donner le nom de la catégorie de chaque produit.


2. Donner la référence du produit, son nom, et sa catégorie.
3. Donner la référence du produit, son nom et l’ensemble des colonnes de la table
catégorie.
4. Donner l’ensemble des produits et leurs catégories fournis par les entreprises françaises.
5. Donner le nombre de produits par catégorie.
6. Donner les informations de chaque produit, sa catégorie et les informations du
fournisseur.
7. Récupérer les informations des fournisseurs pour chaque produit.
Exécuter cette requête : Qu’est-ce que vous remarquez ?

SELECT *
FROM (Commande NATURAL JOIN Client)
NATURAL JOIN Employe;
SELECT COUNT(*)
FROM Client;
SELECT COUNT(DISTINCT CodeCli)
FROM Commande;

8. Reprenez la requête de la question 1 en utilisant une jointure interne.


9. Reprenez la requête précédente en utilisant des alias pour les tables.
10. Récupérer les produits fournis par les entreprises françaises en utilisant une jointure
interne.
11. Récupérez tous les clients avec les détails de commande, tout en gardant la table de
résultat les clients sans commande.
12. Récupérez le nombre de commandes par client en triant le résultat par code du client.
13. Récupérez tous les détails des produits et leurs catégories en utilisant un produit
cartésien (jointure à la main).

Pr. Hosni M. 3
ENSAM AIDT UMI

14. Récupérer les informations des fournisseurs pour chaque produit, avec un produit
cartésien (jointure à la main).
15. Compter le nombre de produits par fournisseur.

Sous requête :

1. Récrire les requêtes suivantes en utilisant des sous requêtes :


a. SELECT NoCom FROM Commande NATURAL JOIN Client WHERE Societe = "Bon
app";
b. SELECT NoCom FROM Commande NATURAL JOIN Client WHERE Pays = "France";
2. Lister les employés n'ayant jamais effectué une commande, via une sous-requête
3. Lister les clients ayant au moins une commande.
4. Lister les produits n'ayant jamais été commandés, à l'aide de l'opérateur EXISTS.

Ensembliste :

1. Récupérer l’ensemble des clients qui sont français ou dont le contact est propriétaire de
l’entreprise.
2. Modifier la requête précédente pour trier le résultat selon le nom de la société.
3. Modifier la requête précédente pour afficher les noms des sociétés dupliqué dans le
tableau.
4. Lister les employés (nom et prénom) étant "Représentant(e)" ou étant basé au "Royaume-
Uni"
5. Récupérer tous les clients français dont le contact est le propriétaire de l’entreprise.
6. Lister les employés (nom et prénom) étant "Représentant(e)" et étant basé au "Royaume-
Uni"
7. Récupérer les clients français dont le contact n’est pas propriétaire.
8. Lister les employés (nom et prénom) étant "Représentant(e)" mais n'étant basé au
"Royaume-Uni"

Pr. Hosni M. 4

Vous aimerez peut-être aussi