Travail a réaliser
Créer la base film sur la plateforme alwaysdata
Connecter vous a l’interface phpmyadmin de alwaysdata
Répondre aux questions de 1 → 8
Pour chaque question réaliser et vérifier la requête sur phpmyadmin A chaque réponse afficher le
résultat de la requête SQL en capturant l’ecran
Il existe donc une relation un à plusieurs entre “film” et “note”, et une relation plusieurs à
plusieurs entre “film” et “pays_de_sortie”.
Voici le schéma mis à jour de la table “film” :
Nom du champ Type du champ Description du champ
nom VARCHAR(255) le nom du film
date_de_sortie DATE la date de sortie du film
synopsis TEXT la description du scénario du film
langue VARCHAR(255) la langue principale du film
budget INTEGER le budget de production du film
note_id INTEGER l'id de l'objet note associé au film
Le schéma de la table “note” est disponible ici :
Nom du champ Type du champ Description du champ
note INTEGER la note sur 5
Et enfin, voici le schéma de “pays_de_sortie” :
Nom du champ Type du champ Description du champ
nom VARCHAR(255) le nom du pays
Question 1
Quelle est la commande qui permet de récupérer uniquement le film Skyfall ?
• SELECT * FROM film WHERE nom LIKE "Skyfall";
• SELECT * FROM film WHERE id = 1;
• SELECT * FROM film ORDER BY nom = "Skyfall";
Ici, on souhaite récupérer le film dont le nom est “Skyfall”. Filtrer se fait avec le mot clé WHERE auquel
on ajoute la règle de comparaison. Ici, on cherche à matcher exactement le mot “Skyfall” sur la
colonne “nom”, d’où l’utilisation de l’opérateur d’égalité.
Question 2
Quels sont les films dont le budget est supérieur ou égal à 100 000 000 $ ?
• Titanic et Skyfall
• Titanic, Skyfall et La La Land
• Titanic uniquement
Ici, on souhaite récupérer plusieurs films selon un opérateur de comparaison sur la colonne “budget”. Il
s’agit de l’opérateur supérieur ou égal (>=) qui se place lui aussi après un WHERE. La commande est
donc SELECT * FROM film WHERE budget >= 100000000 ;
Question 3
Quels sont les films dont le synopsis contient le mot “histoire” ?
• Skyfall uniquement
• Skyfall et La La Land
• Titanic et La La Land
Ici, ou souhaite récupérer plusieurs films dont la colonne “synopsis” contient le mot "histoire". Pour ce
faire, on utilise toujours un filtre après WHERE. Il s’agit du filtre LIKE, auquel on ajoute le texte à
comparer, et on indique à MySQL que ce texte se situe au milieu d’une phrase grâce aux pourcentages
avant et après le mot, soit “%histoire%”. La commande à taper est donc SELECT * FROM film WHERE
synopsis LIKE “%histoire%”;.
Question 4
Combien y-a-t-il de films ?
• 1
• 2
• 3
Ici, on souhaite compter le nombre de films. Cela est possible grâce au mot clé COUNT qui, adossé à
une commande SELECT, permet de retourner le nombre d’objets matchés. La commande à taper est
SELECT COUNT(*) FROM film;.
Question 5
Quels sont les mots clés permettant d’effectuer des opérations arithmétiques sur des requêtes SQL ?
• SUM, AVG, MAX, MIN
• SOMME, MOYENNE, MAXIMUM, MINIMUM
• SUM, AVE, MAXI, MINI
Les mots clés disponibles sont SUM pour faire une somme, AVG pour faire une moyenne, MAX pour
retrouver un maximum, et MIN pour retrouver un minimum.
Question 6
Combien de films ont une note inférieure à 4 ?
• 1
• 2
• 3
Ici, il faut relier les tables “film” et “note” grâce au mot clé JOIN, en précisant à MySQL (grâce au mot
clé ON) quelles sont les colonnes qui permettent de relier les deux tables (ici, l’id de chaque note, et la
“note_id” de chaque film). La commande est donc SELECT * FROM film JOIN note ON (film.note_id =
[Link]) WHERE [Link] < 4;
Question 7
Qu’est-ce qu’une table de liaison ?
• C’est une table qui permet de lier deux tables ayant une relation un à plusieurs entre elles.
• C’est une table qui permet de relier deux tables ayant une relation plusieurs à plusieurs entre
elles.
• C’est une table qui regroupe toutes les vues présentes dans une BDD.
La table de liaison est une table qui permet de lier deux tables entre elles, en stockant des objets avec
l’id de chaque table, afin d’en matérialiser les relations plusieurs à plusieurs sous forme de relations un
à plusieurs.
Question 8
Sélectionnez les bonnes associations de films avec leurs pays de sortie.
• Skyfall en France, Angleterre et USA.
• Titanic en France, USA et Allemagne.
• La La Land aux USA uniquement.
Ici, nous sommes face à une relation plusieurs à plusieurs. Il faut donc passer par la table de liaison
“film_pays_de_sortie”, qu’on JOIN à la fois à “film” et à “pays_de_sortie”. La commande qui permet de
vérifier la solution est donc : SELECT * FROM film JOIN film_pays_de_sortie ON ([Link] =
film_pays_de_sortie.film_id) JOIN pays_de_sortie ON (pays_de_sortie.id =
film_pays_de_sortie.pays_de_sortie_id);