Contenu

enseignements informatiques

Recherche simple Vous recherchez ...

espace pédagogique > disciplines du second degré > enseignements informatiques > enseignement > nsi

atelier SQL

mis à jour le 03/10/2023


vignette.png

Premiers pas en SQL

mots clés : sql, base de données, algorithmique, nsi, python


Les ressources publiées sur ce site sont sous la licence CC BY-NC 4.0.
 

On considère une base de données filmographie qui recense des acteurs , leurs films et les rôles qu’ils y ont joué. Les trois tables suivantes sont un extrait de cette base de données: BDD_film.PNG
1er temps : Déterminer dans quels films joue l’acteur Omar Sy ? Expliquer la démarche.2ème temps : requête SQL sur 2 tables
On donne un fichier filmographie.db sur lequel on va effectuer des requêtes en SQL. On donne ici la requête SQL fournissant les Id_film des films dans lesquels joue Omar Sy

SELECT id_film FROM jouer JOIN acteur
ON id_acteur =id_act
WHERE (nom, prenom)=("Sy","Omar");
 
consigne élèves : Exécuter cette requête puis s’en inspirer pour déterminer les titres de films dans lesquels apparaissent Omar Sy. Essayer plusieurs syntaxes différentes.

On donne ici plusieurs syntaxes possibles d’élèves . Les commenter.

syntaxe 1 :

SELECT id_film FROM jouer JOIN acteur
ON id_acteur = id_act
WHERE (nom,prenom) = ("Sy","Omar");

SELECT titre FROM film
WHERE id_film in (1,5,8);

syntaxe 2 :

SELECT DISTINCT titre FROM film JOIN jouer
ON film.id_film =jouer.id_film
WHERE jouer.id_film =1 OR jouer.id_film =8 or jouer.id_film =5

syntaxe 3 :

SELECT DISTINCT titre FROM film JOIN jouer
ON film.id_film =jouer.id_film
WHERE jouer.id_film in (1,5,8);

syntaxe 4 :

SELECT DISTINCT titre FROM film JOIN jouer
ON film.id_film =jouer.id_film
WHERE jouer.id_film in (SELECT id_film FROM jouer JOIN acteur
ON id_acteur =id_act
WHERE (nom, prenom)=("Sy","Omar"));

syntaxe 5 :

SELECT titre FROM film
JOIN jouer
JOIN acteur
ON film.id_film = jouer.id_film AND id_act = id_acteur
WHERE (nom,prenom)=("Sy","Omar");

remarque : Lorsqu’on réalise une jointure entre deux tables qui possèdent un attribut commun, on peut occulter le ON en écrivant NATURAL JOIN ; on dit alors que la jointure est naturelle.

SELECT DISTINCT titre FROM film NATURAL JOIN jouer
WHERE jouer.id_film in (1,5,8);

Exercice : En faisant la jointure sur 2 tables , déterminer :
  • les rôles joués par Audrey Tautou
  • en quelles années sont sortis des films dont un rôle est Samuel ?

La base filmographie.db contient aussi une table réalisateur(id_rea,nom,prenom,age).La clé primaire est id-rea et id_film est une clé étrangère pointant vers l'attribut de même nom de la table film.Pour des questions de simplifications, en cas de plusieurs réalisateurs d’un même film, un seul nom a été inscrit dans la base.
  • quels sont les titres de films réalisés par Jean-Pierre Jeunet ?
3ème temps : Inventer des requêtes nécessitant trois tables. Les écrire et les tester.
4ème temps : utilisation de fonctions d’agrégation
  1. Compter le nombre de films dans lesquels Clovis Cornillac a joué 
  2. Dénombrer les films dans lesquels un rôle de capitaine est joué
  3. Déterminer le film le plus long dans lequel Audrey Fleurot a joué.
  4. Combien en moyenne durent les films dans lesquels Audrey Tautou a joué ?
    Pour les deux dernières requêtes, on pourra s’aider de https://www.sqltutorial.org/sql-limit/
  5. Déterminer les 3 films les plus longs
  6. Déterminer le 3ème film le plus long
 

information(s) pédagogique(s)

niveau : tous niveaux

type pédagogique :

public visé : non précisé

contexte d'usage :

référence aux programmes :

ressource(s) principale(s)

logo.png journée de partages de pratiques en NSI 14/06/2023
Journée pédagogique NSI : conférences et ateliers le 31 mai 2023 au lycée Jean Perrin de Rezé
NSI

documents complémentaires

Fichier(s) associé(s)
archive Les différents fichiers accessibles au téléchargement

haut de page

enseignements informatiques - Rectorat de l'Académie de Nantes