Correction exercices les bases de données MySQL Série 01

Exercices les bases de données MySQL Série 01

  1. Exercice 01




    1. Énoncé
    2. Correction
      • Continent (numContinent, nomContinent)
        Fleuve (numFleuve, nomFleuve)
        Frontalier (numPays1#, numPays2#)
        Pays ( numPays, nomPays, capitale, population, superficieKm², dateAdhesionONU, numContinent#)
        Traversee (numPays#, numFleuve#)
        1/

        SELECT nomFleuve
        FROM fleuve;
        2/

        SELECT nomPays, capitale
        FROM pays
        WHERE capitale LIKE 'B%';
        3/

        SELECT nomPays, superficieKm²
        FROM pays
        WHERE superficieKm² >= 200000;
        4/

        SELECT COUNT(*)
        FROM pays;
        5/

        SELECT nomPays, superficieKm²
        FROM pays
        WHERE superficieKm² = (SELECT MAX(superficieKm²) FROM pays);
        6/

        SELECT nomPays, capitale
        FROM pays 
           INNER JOIN continent ON pays.numContinent = continent.NumContinent 
        WHERE nomContinent = 'Afrique'
        ORDER BY nomPays;
        7/

        SELECT nomPays, capitale
        FROM pays  
            INNER JOIN continent ON pays.numContinent = continent.NumContinent 
        WHERE nomContinent = 'Afrique'
        ORDER BY superficieKm² DESC;
        8 /

        SELECT SUM(superficieKm²)
        FROM pays 
        INNER JOIN continent ON pays.numContinent = continent.numContinent 
        WHERE nomContinent ='Afrique';



        9/

        SELECT nomContinent, SUM(superficieKm²)
        FROM pays 
        INNER JOIN continent ON pays.numContinent = continent.numContinent 
        GROUP BY nomContinent;
        10/

        SELECT AVG(superficieKm²)
        FROM pays;
        11/

        SELECT nomPays, COUNT(numFleuve)
        FROM traversee 
        INNER JOIN pays ON traversee.numPays = pays.numPays 
        GROUP BY nomPays;
        12/

        SELECT nomPays
        FROM pays 
        INNER JOIN continent ON pays.numContinent = continent.numContinent 
        WHERE superficieKm² <=  100000 
        AND nomContinent = 'Amérique' 
        ORDER BY superficieKm² ASC;
        13/

        SELECT nomPays, capitale
        FROM pays, traversee
        WHERE pays.numPays = traversee.numPays
        GROUP BY nomPays, capitale
        HAVING COUNT(*) > 2;
        14/

        SELECT p1.nomPays, p2.nompays
        FROM pays p1, pays p2, frontalier
        WHERE p1.numPays = numPays1 
        AND numPays2 = p2.numPays 
        ORDER BY p1.nomPays, p2.nomPays 
    3. Exercice 02




      1. Énoncé
      2. Correction
        • 1/

            Voiture(numserie, couleur, prix, cout, marque, modele)
            Arrivee(numserie,dateArr,magasin)
            Client(numCli,nom,prenom,adresse)
            Vendeur(numVen,nom,prenom,adresse,salairefixe,magasin)
            Vente(numero,dateVente,prixachat,numserie,#numVen,#numCli)
          2.1/

            SELECT Voiture.numserie
            FROM Voiture, Vente
            WHERE Voiture.numserie = Vente.numserie
            AND date > '2007-04-15'
          2.2/

            SELECT Voiture.numserie
            FROM Voiture,Vente
            WHERE Voiture.numserie = Vente.numserie
            AND prixachat-cout >= ALL (SELECT prixachat-cout
            FROM Voiture,Vente
            WHERE Voiture.numserie = Vente.numserie)
          2.3/

            SELECT nomv, prenomv
            FROM Vente,Voiture
            WHERE Voiture.numserie = Vente.numserie
            AND prix-prixachat >= ALL (SELECT prix-prixachat
            FROM Voiture,Vente
            WHERE Voiture.numserie = Vente.numserie)
          2.4/

            SELECT magasin, SUM(benef) as benefice
            FROM (SELECT nom,prenom,magasin,
            SUM(prixachat-cout-0.5*(prix-cout))-salaire as benef
            FROM Voiture,Vente,Vendeur
            WHERE Voiture.numserie = Vente.numserie
            AND nomv = nom
            AND prenomv = prenom
            AND date BETWEEN ’2007-01-01’ AND ’2007-01-31’
            GROUP BY nom,prenom,magasin) BeneficesVendeurs
            GROUP BY magasin
          2.5/

            SELECT nomc,prenomc
            FROM Vente,Voiture
            WHERE Voiture.numserie = Vente.numserie
            GROUP BY nomc,prenomc
            HAVING SUM(prixachat-cout-0.5*(prix-cout)) >= ALL
            (SELECT SUM(prixachat-cout-0.5*(prix-cout))
            FROM Vente,Voiture
            WHERE Voiture.numserie = Vente.numserie
            GROUP BY nomc,prenomc)