Corrections

Exercice 1 -(Requêtes de base)

Requêtes simples

  1. Que sait-on de Hulk ?
    SELECT * FROM personnage
    WHERE nom='Hulk';
    
  2. Quels sont les noms des personnage féminin ?
    SELECT nom
    FROM `personnage`
    WHERE sexe = 'F';
    
  3. Quelles sont les femmes qui n’ont pas de nom civil connu ?
    SELECT nom
    FROM `personnage`
    WHERE sexe = 'F' AND nom_civil IS NULL;
    
  4. Donner les noms des personnages féminins de l’équipe numéro 1.
    SELECT nom
    FROM `personnage`
    WHERE sexe = 'F' AND idequipe = 1;
    
  5. Afficher les noms des personnages des équipes 1 à 4 classés par numéro d’équipe et par sexe.

SELECT nom FROM personnage
WHERE idequipe BETWEEN 1 AND 4
ORDER BY idequipe, sexe;
6. Afficher les noms des personnages de l’équipe 1 classés par ordre alphabétique décroissant.
SELECT nom FROM personnage
WHERE idequipe = 1
ORDER BY nom DESC;
7. Donner les noms des personnages dont le nom termine par man.
SELECT nom FROM personnage
WHERE LOWER(nom) LIKE ‘%man’;
8. Donner les noms des personnages qui ne sont pas d’alignement 1 ni 3.
SELECT nom FROM personnage
WHERE NOT (idalignement = 1 OR idalignement = 1);

Exercice 2 – Expressions et fonctions
1. Combien de personnages sont enregistrés ?
SELECT COUNT(*) FROM personnage;
2. Quelle est la plus grande puissance de personnage ?
SELECT MAX(puissance) FROM personnage;
3. Quelle est la plus petite puissance de personnage ?
SELECT MIN(puissance) FROM personnage;
4. Quelle est la puissance moyenne des personnages ?
SELECT AVG(puissance) FROM personnage;
5. Quelle est la puissance cumulée de tous les personnages ?
SELECT SUM(puissance) FROM personnage;
9/

Exercice 3 – Requêtes imbriquées
1. Quel est le nom de l’équipe d’Hulk ?
SELECT nom FROM equipes
WHERE equipes.idequipe = ( SELECT personnage.idequipe FROM personnage
WHERE personnage.nom = ‘Hulk’);
2. Quelle est la particularité de la race du personnage Ronan ?
SELECT race.particularite FROM race
WHERE race.idrace = (SELECT personnage.idrace FROM personnage
WHERE personnage.nom=’Ronan’);
3. Listes les noms des personnes qui ont un alignement mauvais par ordre alphabétique. (16 lignes)
SELECT personnage.nom FROM personnage
WHERE personnage.idalignement = (SELECT alignement.idalignement FROM alignement
WHERE alignement.nom=’Mauvais’)
ORDER BY personnage.nom;
4. Qui sont les membres de l’équipe d’Hulk ? (13 lignes)
SELECT personnage.nom FROM personnage
WHERE personnage.idequipe = (SELECT personnage.idequipe FROM personnage
WHERE personnage.nom=’Hulk’);
5. Donner la liste des humains, classés par puissance. (45 lignes)
SELECT personnage.nom FROM personnage
WHERE personnage.idrace = (SELECT race.idrace FROM race
WHERE race.nom=’Humains’)
ORDER BY personnage.puissance;
6. Dans quels films apparait Thor ? (7 lignes)
SELECT films.titre FROM films
WHERE films.idFilms IN (SELECT apparait_dans.idFilms FROM apparait_dans
WHERE apparait_dans.idpersonnage =
(SELECT personnage.idpersonnage FROM personnage
WHERE personnage.nom = ‘Thor’));
7. Donner la liste des personnages apparaissant dans le film Avengers ? (7 lignes)
SELECT personnage.nom FROM personnage
WHERE personnage.idpersonnage IN (SELECT apparait_dans.idpersonnage FROM apparait_dans
WHERE apparait_dans.idFilms = (SELECT films.idFilms FROM films
WHERE films.titre = ‘Avengers’));
8. Quel sont les pouvoirs de Hulk ? (6 lignes)
SELECT pouvoirs.nom FROM pouvoirs
WHERE pouvoirs.idpouvoirs IN (SELECT pouvoir_possede.idpouvoirs FROM pouvoir_possede
WHERE pouvoir_possede.idpersonnage =
(SELECT personnage.idpersonnage FROM personnage
WHERE personnage.nom = ‘Hulk’));
10/

Exercice 4 – Jointure
1. Noms et race des personnages ’mauvais’. (16 lignes)
SELECT personnage.nom, race.nom, alignement.nom FROM personnage
INNER JOIN race ON personnage.idrace = race.idrace
INNER JOIN alignement ON personnage.idalignement = alignement.idalignement
WHERE alignement.nom = ‘Mauvais’;
2. Donner la listes des personnages étant des génies scientifiques ou intellectuels (8 lignes).
SELECT DISTINCT personnage.nom FROM personnage
INNER JOIN pouvoir_possede ON personnage.idpersonnage = pouvoir_possede.idpersonnage
INNER JOIN pouvoirs ON pouvoir_possede.idpouvoirs = pouvoirs.idpouvoirs
WHERE pouvoirs.nom = ‘Génie intelectuel’ OR pouvoirs.nom = ‘Génie scientifique’ ;
3. Listes des pouvoirs des personnages de l’équipe ’The Avengers’ (8 lignes).
SELECT DISTINCT pouvoirs.nom FROM pouvoirs
INNER JOIN pouvoir_possede ON pouvoirs.idpouvoirs = pouvoir_possede.idpouvoirs
INNER JOIN personnage ON personnage.idpersonnage = pouvoir_possede.idpouvoirs
INNER JOIN equipes ON equipes.idequipe = personnage.idequipe
WHERE equipes.nom = ‘The Avengers’;
Exercice 4 – Aggrégation
1. Afficher pour chaque équipe, son nom et le nombre de membre. Les équipes sont triées par effectifs
décroissants.
SELECT equipes.nom, count(personnage.nom) FROM equipes
INNER JOIN personnage ON personnage.idequipe = equipes.idequipe
GROUP BY equipes.idequipe
ORDER BY count(personnage.nom) DESC
2. Donner pour chaque équipe, son nom et sa puissance moyenne, arrondi au dixième près.
SELECT equipes.nom, ROUND(AVG(personnage.puissance),1) AS puissance FROM equipes
INNER JOIN personnage ON personnage.idequipe = equipes.idequipe
GROUP BY equipes.idequipe;
Exercice 4 – Corrélation
1. Afficher les races qui comportent un personnage avec une puissance strictement supérieure à 150 (3 lignes)
SELECT DISTINCT race.nom AS Race FROM race
INNER JOIN personnage ON personnage.idrace = race.idrace
WHERE personnage.nom IN (SELECT personnage.nom FROM personnage WHERE puissance > 150);
Exercice 5 – Mise à jour
1. Dans la table personnage, mettez à jour le personnage ’Black Widow’ pour faire passer sa puissance à 50.
UPDATE personnage
SET personnage.puissance = 50
WHERE personnage.nom = ‘Black Widow’;
11/