© Your Copyright
Formuler les requêtes SQL qui permettront de retrouver les informations dans la base de données « Cinémathèque ».
A partir du modèle de données crée par les commandes SQL :
CREATE TABLE personnes ( personne_id INTEGER PRIMARY KEY AUTOINCREMENT,
nom VARCHAR(20),
prenom VARCHAR(20),
pays VARCHAR(20) DEFAULT 'France' );
CREATE TABLE films ( film_id INTEGER PRIMARY KEY AUTOINCREMENT,
realisateur_id INTEGER NOT NULL,
titre VARCHAR(50),
genre VARCHAR(10),
annee INTEGER,
FOREIGN KEY (realisateur_id) REFERENCES personnes(personne_id) );
CREATE TABLE roles ( film_id INTEGER NOT NULL,
personne_id INTEGER NOT NULL,
role VARCHAR(20),
PRIMARY KEY (film_id,personne_id),
FOREIGN KEY (personne_id) REFERENCES personnes,
FOREIGN KEY (film_id) REFERENCES films);
Ecrire la requête SQL correspondante.
SELECT titre FROM films;
Ecrire la requête SQL correspondante.
SELECT *
FROM films
WHERE annee>=1975 AND genre='Drame';
Ecrire la requête SQL correspondante.
SELECT nom, prenom
FROM films NATURAL JOIN roles, personnes
WHERE personne_id=acteur_id AND films.titre='Taxi Driver';
Ecrire la requête SQL correspondante.
SELECT DISTINCT nom, prenom
FROM personnes, roles
WHERE personne_id=acteur_id
AND acteur_id IN (
SELECT realisateur_id
FROM films
);
Ecrire la requête SQL correspondante.
SELECT nom, role, titre
FROM personnes, roles NATURAL JOIN films
WHERE personne_id=acteur_id
AND realisateur_id IN (
SELECT personne_id
FROM personnes
WHERE nom='Scorsese' AND prenom='Martin'
)
ORDER BY nom;
Ecrire la requête SQL correspondante.
SELECT nom,prenom
FROM films, personnes
WHERE personne_id=realisateur_id
AND nom <> 'Leone'
AND genre IN (SELECT genre
FROM films, personnes
WHERE personne_id=realisateur_id
AND nom='Leone' AND prenom='Sergio');
Ecrire la requête SQL correspondante.
SELECT genre, COUNT (*)
FROM films
WHERE annee >= 1960
GROUP BY genre;
Ecrire la requête SQL correspondante.
SELECT titre, COUNT(acteur_id)
FROM films NATURAL JOIN roles,personnes
WHERE personne_id=realisateur_id AND nom='Scorsese' AND prenom='Martin'
GROUP BY film_id, titre HAVING COUNT(*)>1;
Ecrire la requête SQL correspondante.
SELECT nom, prenom
FROM personnes,roles
WHERE personne_id=acteur_id
EXCEPT
SELECT nom, prenom
FROM personnes,roles NATURAL JOIN films
WHERE personne_id=acteur_id
AND genre='Western';
Ecrire la requête SQL correspondante.
SELECT nom, prenom, count(distinct film_id) AS "Nombre de films"
FROM personnes, films
WHERE personne_id=realisateur_id AND nom<>'Leone' AND prenom<>'Sergio'
AND realisateur_id IN ( SELECT realisateur_id
FROM films
WHERE genre IN (SELECT genre
FROM personnes, films
WHERE personne_id=realisateur_id
AND nom='Leone' AND prenom='Sergio'))
GROUP BY nom, prenom;