Vous êtes sur la page 1sur 8

DCG1 UE8 Système d’information

Chapitre 8 – Manipulation de la Base de Données - Les requêtes SQL


Applications 1 à 9 du livre – Les Requêtes simples
7. La liste des salariés (nom, prénom) qui n’ont pas de service de rattachement (c’est-à-dire que leur code de
service n’est pas renseigné).
SELECT nomSalarie, prenomSalarie
FROM Salarie
WHERE codeService IS NULL ;
8. La liste des projets dont le budget est supérieur à 200.000 €.
SELECT *
FROM Projet
WHERE budget > 200 000 ;
9. La liste des projets qui commencent cette année.
SELECT *
FROM Projet
WHERE dateDebut >= ‘01/01/20NN’ ; ou WHERE YEAR(dateDebut) >= 20NN ;

Min
APPLICATION 3

Écrire les requêtes permettant d’obtenir :


1. La liste des sports proposés par l’association.
SELECT * FROM Sport ;
2. La liste des adhérents (noms et prénoms) de l’association.
SELECT nomAdherent, prenomAdherent FROM Adherent ;
3. La liste des communes où résident les adhérents.
SELECT DISTINCT villeAdherent FROM Adherent ;
4. La liste des codes des sports pratiqués par l’adhérent n° 37.
SELECT codeSport
FROM Inscription
WHERE numAdherent = 37 ;
5. La liste des codes des sports pratiqués par Monsieur Bertaud.
SELECT codeSport
FROM Adherent, Inscription
WHERE Adherent.numAdherent = Inscription.numAdherent
AND nomAdherent LIKE ‘Bertaud’ ;
6. La liste des noms des sports pratiqués par Monsieur Bertaud.
SELECT nomSport
FROM Adherent, Inscription, Sport
WHERE Adherent.numAdherent = Inscription.numAdherent
AND Inscription.codeSport = Sport.codeSport
AND nomAdherent LIKE ‘Bertaud’ ;
7. La liste des noms des sports pour lesquels Monsieur Bertaud s’est inscrit en 2020.
SELECT nomSport
FROM Adherent, Inscription, Sport
WHERE Adherent.numAdherent = Inscription.numAdherent
© FontainePicard - Reproduction interdite

AND Inscription.codeSport = Sport.codeSport


AND nomAdherent LIKE ‘Bertaud’
AND YEAR(dateInscription) = 2020 ; or AND dateInscription BETWEEN ‘01/01/2020’ AND ‘31/12/2020’ ;
8. La liste des inscriptions (code de l’adhérent, date d’inscription) pour le sport n° 3.
SELECT codeAdherent, dateInscription
FROM Inscription
WHERE codeSport = 3 ;
Chapitre 6 : Manipulation des données de la base 111
9. La liste des inscriptions (code de l’adhérent, date d’inscription) pour le football.
SELECT codeAdherent, dateInscription
FROM Inscription, Sport
WHERE Inscription.codeSport = Sport.codeSport
AND nomSport = ‘football’ ;
10. La liste des inscriptions (nom de l’adhérent, date d’inscription) pour le football.
SELECT nomAdherent, dateInscription
FROM Adherent, Inscription, Sport
WHERE Adherent.numAdherent = Inscription.numAdherent
AND Inscription.codeSport = Sport.codeSport
AND nomSport = ‘football’ ;
11. La liste des inscriptions (nom de l’adhérent, nom du sport, date d’inscription) qui ont 3 cours hebdomadaires
ou plus.
SELECT nomAdherent, nomSport, dateInscription
FROM Adherent, Inscription, Sport
WHERE Adherent.numAdherent = Inscription.numAdherent
AND Inscription.codeSport = Sport.codeSport
AND nbCoursHebdo >= 3 ;

Min
APPLICATION 4 : D’APRÈS DPECF 2002

Écrire en SQL les requêtes permettant d’obtenir les réponses aux questions qui suivent :
1. Quel est le numéro de téléphone de l’artisan enregistré sous le numéro 12 ?
SELECT TelArti
FROM Artisan
WHER numArti = 12 ;
2. Quels sont les numéros, noms et prénoms des artisans de la commune de Pau ?
SELECT numArti, nomArti, prenArti
FROM Artisan, Commune
WHERE Artisan.codeCommune = Commune.codeCommune
AND nomCommune = ‘Pau’ ;
3. Quels sont les libellés des compétences complémentaires maîtrisées par l’artisan Gaston VANPARLABA ?
SELECT libCompetence
FROM Artisan, MaitriseComplementaire, Competence
WHERE Artisan.numArti = Maitrise_Complementaire.numArti
AND Maitrise_Complementaire.numCompetence = Competence.numCompetence
AND nomArti = ‘Vanparlaba’
AND prenArti = ‘Gaston’ ;
4. Quels sont les noms et prénoms ainsi que le numéro de téléphone des artisans spécialisés « plomberie » et
localisés dans la ville de Bayonne ?
SELECT nomArti, prenArti, telArti
© FontainePicard - Reproduction interdite

FROM Artisan, Commune, Competence


WHERE Artisan.codeCommune = Commune.codeCommune
AND Artisan.numCompetenceSpecialite = Competence.numCompetence
AND nomCommune = ‘Bayonne’
AND libCompetence = ‘Plomberie’ ;

112 UE8 – Systèmes d’information de gestion


Min
APPLICATION 5

Établir les requêtes SQL permettant d’obtenir :


1. La liste des clients de l’entreprise.
SELECT *
FROM Client ;
2. La liste des produits (référence, désignation et prix unitaire) proposés par l’entreprise.
SELECT referenceProd, designationProd, prixUnitaireProd
FROM Produits ;
3. La liste des commandes (numéro, date et montant) passées en 2020.
SELECT numCommande, dateCommande, montantCommande
FROM Commande
WHERE YEAR(dateCommande) = 2020 ;
4. La liste des commandes (numéro, date, montant, ainsi que numéro et nom du client) passées en 2020.
SELECT numCommande, dateCommande, montantCommande, numeroClient, nomClient
FROM Commande, Client
WHERE Commande.numeroClient = Client.numeroClient
AND YEAR(dateCommande) = 2020 ;
5. La liste des commandes (numéro, date) du produit référencé AZ123.
SELECT numCommande, dateCommande
FROM Ligne_Comm, Commande
WHERE Ligne_Comm.numCommande = Commande.numCommande
AND referenceProd = ‘AZ123’ ;
6. La liste des clients (numéro et nom) ayant commandé le produit référence AZ123.
SELECT numeroClient, nomClient
FROM Ligne_Comm, Commande, Client
WHERE Ligne_Comm.numCommande = Commande.numCommande
AND Commande.numeroClient = Client.numeroClient
AND referenceProd = ‘AZ123’ ;

Min
APPLICATION 6 : D’APRÈS DPECF 2001

Écrire en SQL les requêtes suivantes :


1. Liste des vendeuses, par ordre alphabétique.
SELECT *
FROM Vendeur
WHERE sexeHouF = ‘F’
ORDER BY nom, prenom ;

SELECT *
FROM Vendeur
© FontainePicard - Reproduction interdite

WHERE salaireFixe BETWEEN 1500 AND 2000 ;


3. Parc des véhicules pas encore vendus (immatriculation, marque, nom du modèle, kilométrage).
SELECT numImmat, marque, nomModele, km
FROM Vehicule, Modele
WHERE Vehicule.idModele = Modele.idModele
AND dateVente IS NULL ;
Chapitre 6 : Manipulation des données de la base 113
4. Liste des véhicules vendus par Jean-Pierre Payet, classés par prix de vente (ordre décroissant).
SELECT idVeh, numImmat
FROM Vehicule, Vendeur
WHERE Vehicule.idVendeur = Vendeur.idVendeur
AND nom = ‘PAYET’
AND prenom = ‘Jean-Pierre’
ORDER BY prixVente DESC ;
5. Liste des véhicules vendus en 2019, de marque Peugeot, Renault ou Citroën.
SELECT numImmat, nomModele, dateVente
FROM Vehicule, Modele
WHERE Vehicule.idModele = Modele.idModele
AND YEAR(dateVente) = 2019
AND marque IN (‘Peugeot’, ‘Renault’, ‘Citroën’) ;
6. Liste des véhicules vendus avec leur numéro d’immatriculation, leur prix de vente et leur prix d’achat.
SELECT numImmat, prixVente, prixAchat
FROM Vehicule
WHERE prixVente IS NOT NULL ; ou WHERE dateVente IS NOT NULL ;
7. Liste des véhicules vendus avec leur numéro d’immatriculation et la marge (différence entre le prix de vente
et le prix d’achat).
SELECT numImmat, (prixVente – prixAchat) AS Marge
FROM Vehicule
WHERE prixVente IS NOT NULL ; ou WHERE dateVente IS NOT NULL ;

Min
APPLICATION 7 : D’APRÈS DPECF 2003

Établir en SQL les requêtes permettant de déterminer :


1. La composition (avec le nom et le pourcentage pour chaque composant) du produit VASTAREL.
SELECT nomComp, pourcentage
FROM Composant, Composition, Produit
WHERE Composant.idComp = Composition.idComp
AND Composition.idPRod = Produit.idProd
AND nomProd = ‘VASTAREL’ ;
2. La liste des produits fabriqués par MUSTELA.
SELECT idProd, nomProd
FROM Produit, Fabriquer, Fabricant
WHERE Produit.idProd = Fabriquer.idProd
AND Fabriquer.idFab = Fabricant.idFab
AND nomFab = ‘MUSTELA’ ;

SELECT quantite
FROM Forme, Avoir, Produit
© FontainePicard - Reproduction interdite

WHERE Forme.idForme = Avoir.idForme


AND Avoir.idProd = Produit.idProd
AND nomForme = ‘sirop’
AND nomProd= ‘MUXOL’ ;

114 UE8 – Systèmes d’information de gestion


4. La liste des produits contenant du Ginko.
SELECT idProd, nomProd*
FROM Composant, Composition, Produit
WHERE Composant.idComp = Composition.idComp
AND Composition.idPRod = Produit.idProd
AND nomComp = Ginko ;
5. Le prix du TARDYFERON en boîte de 20 comprimés.
SELECT prixHT
FROM Forme, Avoir, Produit
WHERE Forme.idForme = Avoir.idForme
AND Avoir.idProd = Produit.idProd
AND nomProd = ‘TARDYFERON’
AND quantite = 20
AND nomForm = ‘comprimés’ ;

Min
APPLICATION 8 : D’APRÈS DPECF 2004

Écrire en SQL les requêtes suivantes :


1. Liste des personnels employés par l’entreprise.
SELECT *
FROM Personnel ;
2. Liste, triée par ordre alphabétique, des élèves de la classe de DCG1 de l’établissement “Phileas Lebesgue”
(nom et prénom des élèves).
SELECT nomEleve, prenomEleve
FROM Eleve, Etablissement
WHERE Eleve.idEtab = Etablissement.idEtab
AND nomEtab = ‘Phileas Lebesgue’
AND classeEleve = ‘DCG1’ ;

SELECT idEtab, nomEtab, villEtab


FROM Etablissement, Seance
WHERE Etablissement.idEtab = Seance.idEtab
AND dateSeance = ‘07/04/2020’ ;

série 871542A ?
SELECT idObj, marqueObj
FROM Objectif, Compatible
WHERE Objectif.idObj = Compatible.idObj
AND idApp = ‘871542A’ ;
5. Quels sont les personnels (nom et prénom) utilisant des appareils de marque Nikon ?
SELECT nomPers, prenomPers
© FontainePicard - Reproduction interdite

FROM Personnel, Utiliser, Appareil


WHERE Personnel.idPers = Utiliser.idPers
AND Utiliser.idApp = Appareil.idApp
AND marqueApp = ‘Nikon’ ;

Chapitre 6 : Manipulation des données de la base 115


6. Quels sont les personnels (nom et prénom) utilisant des appareils compatibles avec des objectifs de focale
supérieure à 70 ?
SELECT nomPers, prenomPers
FROM Personnel, Utiliser, Appareil, Compatible, Objectif
WHERE Personnel.idPers = Utiliser.idPers
AND Utiliser.idApp = Appareil.idApp
AND Appareil.idApp = Compatible.idApp
AND Compatible.idObj = Objectif.idObj
AND longueurFocale >= 70 ;
Remarque : la requête ci-dessus permet de décomposer le chemin complet entre les tables Personnel et
Objectif. Cependant, il est possible de ne pas mobiliser la table Appareil et de faire la jointure sur le numéro
d’appareil directement entre Utiliser et Compatible. Ceci permet de ne pas charger en mémoire la table
Appareil et donc d’avoir une requête optimisée :
SELECT nomPers, prenomPers
FROM Personnel, Utiliser, Compatible, Objectif
WHERE Personnel.idPers = Utiliser.idPers
AND Utiliser.idApp = Compatible.idApp
AND Compatible.idObj = Objectif.idObj
AND longueurFocale >= 70 ;

Min
APPLICATION 9 : D’APRÈS DPECF 2006

Écrire en SQL les requêtes suivantes :


1. Liste détaillée des sites de plongée proposés par le centre.
SELECT *
FROM Site ;

SELECT idSite, nomSite


FROM Site, Plongee
WHERE Plongee.idSite = Site.idSite
AND datePlongee = ‘23/08/20NN’
AND heureDepart >12 ;
3. Liste des plongées (numéro, date et heure de départ) ayant utilisé le bateau « Le Brigantin » en 2019.
SELECT idPlongee, datePlongee, heureDepart
FROM Plongee, Bateau
WHERE Bateau.codeBat = Plongee.codeBat
AND nomBat = ‘Le Brigantin’
AND YEAR(datePlonge) = 2019 ;
4. Nom, prénom et niveau (libellé) des plongeurs, triés par ordre alphabétique, qui ont réalisé la plongée numéro
1818.
SELECT nom, prenom, libellé
FROM Plongeur, Réaliser, Niveau
© FontainePicard - Reproduction interdite

WHERE Plongeur.idP = Réaliser.idP


AND Plongeur.numNiveau = Niveau.numNiveau
AND idPlongee = 1818
ORDER BY nom, prenom ;

116 UE8 – Systèmes d’information de gestion

Vous aimerez peut-être aussi