Mise en pratique du SQL
Sql sur ce site
Pour connaßtre l'ensemble des tables de la base chargée dans les éditeurs SQL de ce site, il suffit d'écrire :
SELECT *
FROM sqlite_master
WHERE TYPE ="table";
et de valider.
Base de données Prix Nobel
Activité 1 - Base de donnée des prix Nobel
A l'aide de la cellule ci-dessous, répondre aux questions :
Base Prix Nobel
a) Combien de relation possÚde la base de données?
b) Combien d'attributs possĂšde la relation nobel?
c) Quel est le type de l'attribut annee?
RĂ©ponse
a. Il y a une seule relation : nobel
b. Elle possÚde trois attributs : annee
, sujet
, laureat
c. Lâattribut annee
est du type Entier
ActivitĂ© 2 - RequĂȘtes d'interrogation
Chaque requĂȘte devra se terminer par un ;
avant d'ĂȘtre exĂ©cutĂ©e.
Base Prix Nobel
- Comment afficher le nom de tous les lauréats?
- Comment afficher le nom de toutes les disciplines en Ă©vitant les doublons?
- Quelle est la discipline de Wilhelm Conrad Röntgen?
- Dans quelle discipline Paul Krugman est-il devenu Prix Nobel?
- En quelle année Albert Fert a-t-il eu le prix Nobel?
- Quelle est lâannĂ©e de distinction de Pierre Curie?
- Quelle est lâannĂ©e de distinction et la matiĂšre de Bertha von Suttner?
- Quels sont les lauréats distingués au XXI e siÚcle?
- Quels sont les lauréats du prix Nobel de la Paix durant la deuxiÚme guerre mondiale?
- Quels sont les lauréats distingués en Médecine en 1901 et 2001?
- Quels sont les lauréats des prix nobel de Physique et de Médecine en 2008?
RĂ©ponse
1.
SELECT laureat
FROM nobel;
SELECT DISTINCT sujet
FROM nobel;
SELECT sujet
FROM nobel
WHERE laureat LIKE "Wilhelm Conrad R%ntgen";
SELECT sujet
FROM nobel
WHERE laureat = "Paul Krugman";
SELECT annee
FROM nobel
WHERE laureat = "Albert Fert";
SELECT annee
FROM nobel
WHERE laureat = "Pierre Curie";
SELECT annee, sujet
FROM nobel
WHERE laureat = "Bertha von Suttner";
SELECT laureat
FROM nobel
WHERE annee >= 2000;
SELECT laureat
FROM nobel
WHERE annee >= 1939 AND annee <= 1945 AND sujet = "Paix";
SELECT laureat
FROM nobel
WHERE (annee = 1901 OR annee = 2001) AND sujet LIKE "M%decine";
SELECT laureat
FROM nobel
WHERE (sujet = "Physique" OR sujet LIKE "M%decine") AND annee = 2008;
ActivitĂ© 3 - RequĂȘtes d'agrĂ©gation
Base Prix Nobel
- Combien dâenregistrements au total comporte la relation?
- Combien de personnes ont reçu le prix Nobel de la paix?
- Combien de personnes ont reçu le prix Nobel de litérature?
- Combien de personnes ont reçu le prix Nobel de mathématiques?
- Combien de personnes ont reçu un prix Nobel en 1901?
- Combien de personnes ont reçu un prix Nobel de chimie en 1939?
- En quelle annĂ©e a Ă©tĂ© dĂ©cernĂ© le premier prix Nobel dâĂ©conomie?
- Combien de prix Nobel a reçu Marie Curie?
- Quels sont les prix laurĂ©ats, leur discipline et lâannĂ©e de distinction de tous les prix Nobel contenant cohen dans leur nom (on ne fera pas de distinction de casse)?
- Combien yâa tâil eu de laurĂ©ats en Physique et en Chimie?
- Combien yâa tâil eu de laurĂ©ats de MĂ©decine et de littĂ©rature en 2000?
- Nombre de laurĂ©ats diïŹĂ©rents parmi les prix nobels de la paix?
RĂ©ponse
1.
SELECT count(*)
FROM nobel;
â 816
SELECT count(laureat)
FROM nobel
WHERE sujet= "Paix";
â 119
SELECT count(laureat)
FROM nobel
WHERE sujet="Literature";
â 105
SELECT count(laureat)
FROM nobel
WHERE sujet="Mathematiques";
â 0
SELECT count(laureat)
FROM nobel
WHERE annee = 1901;
â 6
SELECT count(laureat)
FROM nobel
WHERE annee = 1939 AND sujet = "Chimie";
â 2
SELECT MIN(annee)
FROM nobel
WHERE sujet = "Economie";
â 1969
SELECT count(annee)
FROM nobel
WHERE laureat LIKE "%Marie Curie %";
â 2
SELECT laureat, sujet, annee
FROM nobel
WHERE UPPER(laureat) LIKE "%COHEN %";
â Claude Cohen-Tannoudji|Physique|1997
Stanley Cohen|MĂ©decine|1986
SELECT count(DISTINCT laureat)
FROM nobel
WHERE sujet = "Physique" OR sujet = "Chimie";
â 335
SELECT count(DISTINCT laureat)
FROM nobel
WHERE (sujet = "Literature" OR sujet LIKE "M%decine") AND annee = 2000;
â 4
SELECT count(DISTINCT laureat)
FROM nobel
WHERE sujet = "Paix";
â 116
ActivitĂ© 4 - RequĂȘtes d'insertion
Base Prix Nobel
- En 2019, Esther DuïŹo a reçu le prix Nobel dâĂ©conomie. Ăcrivez la requĂȘte permettant dâinsĂ©rer cet enregistrement.
- Quelle requĂȘte permet de modiïŹer lâenregistrement prĂ©cĂ©dent pour accoler le nom dâĂ©poux (Banerjee) aprĂšs celui de DuïŹo?
- De nombreuses pĂ©titions circulent pour retirer le prix Nobel Ă Aung San Suu Kyi. Quelle requĂȘte permettrait cela?
RĂ©ponse
1.
INSERT INTO nobel
VALUES (2019, "Economie", "Esther Duflo");
UPDATE nobel
SET laureat = "Esther Duflo Banerjee"
WHERE laureat = "Esther Duflo";
DELETE FROM nobel
WHERE laureat LIKE "Aung %";
Base de données Collectivités
Activité 5 - Base de données collectivités
Dans la cellule ci-dessous, on a chargé la base de donnée Collectivites.db
.
Base Collectivites
- Combien de relation possÚde la base de données?
- RĂ©alisez un schĂ©ma relationnel de cette base de donnĂ©es, sous la forme graphique, en prĂ©cisant pour chaque attribut son type et s'il doit impĂ©rativement ĂȘtre rempli.
RĂ©ponse
- Deux relations :
Ville
etDepartement
2.
Ville | Departement |
---|---|
idVille (entier non nul) | idDepartement (entier non nul) |
nom (chaine non nulle) | numero (chaine non nulle) |
codePostal (entier non nul) | nom (chaine non nulle) |
nbHabitants (entier) | |
#idDepartement(entier non nul) |
Activité 6 - Collecte des informations
La base Collectivites est vide. Il faut la remplir. Pour cela, en vous aidant d'internet, complétez les tableaux suivants :
idCommune | Commune | Code Postal | DĂ©partement | Nombre d'habitants |
---|---|---|---|---|
Rouen | ||||
Dieppe | ||||
Enverneu | ||||
Le Neubourg | 27110 | Eure | ||
Igoville |
idDepartement | DĂ©partement | Code d'immatriculation |
---|---|---|
Seine-Maritime | ||
Eure | ||
Calvados |
RĂ©ponse
IdCommune | Commune | Code Postal | DĂ©partement | Nombre dâhabitants |
---|---|---|---|---|
1 | Rouen | 76000 | Seine-Maritime | 110169 |
2 | Dieppe | 76200 | Seine-Maritime | 29080 |
3 | Envermeu | 76630 | Seine-Maritime | 2097 |
4 | Le Neubourg | 27110 | Eure | 4166 |
5 | Igoville | 27460 | Eure | 1746 |
IdDepartement | DĂ©partement | Code dâimmatriculation |
---|---|---|
1 | Seine-Maritime | 76 |
2 | Eure | 27 |
3 | Calvados | 14 |
Activité 7 - Insertion des enregistrements
Base Collectivites
- Insérez le département de Seine-Maritime.
- Insérez la commune de Rouen.
- FaĂźtes de mĂȘme, en une seule requĂȘte, avec les communes de Dieppe et dâEnvermeu.
- InsĂ©rez la commune dâIgoville.
- Insérez la commune du Neubourg.
RĂ©ponse
1.
INSERT INTO Departement
VALUES (1, "76", "Seine-Maritime");
INSERT INTO Ville
VALUES (1, "Rouen", 76000, 110169, 1);
INSERT INTO Ville
VALUES (2, "Dieppe", 76200, 29080, 1), (3, "Envermeu", 76630, 2097, 1);
INSERT INTO Departement
VALUES (2, "27", "Eure");
INSERT INTO Ville
VALUES (5, "Igoville", 27460, 1746, 2);
INSERT INTO Ville
VALUES (4, "Le Neubourg", 27110, 4166, 2);
Activité 8 - Recherche d'informations
Base Collectivites
En recherchant éventuellement les informations manquantes, indiquez le code SQL permettant de répondre aux consignes suivantes :
- Trouville, MĂ©zidon-Canon et CrĂšvecoeur-en-Auge sont des villes du Calvados.
- Le vrai nom de Trouville est en fait Trouville-Sur-Mer.
- MĂ©dizon-Canon et CrĂšvecoeur-en-Auge nâexistent plus. Elles ont fusionnĂ© pour donner une nouvelle commune : MĂ©zidon-VallĂ©e-dâAuge.
RĂ©ponse
1.
INSERT INTO Departement
VALUES (3, "14", "Calvados");
INSERT INTO Ville
VALUES (6, "Trouville", 14360, 4675, 3),
(7, "Mezidon-Canon", 14270, 4838, 3),
(8, "Crevecoeur-en-Auge", 14240, 480, 3);
UPDATE Ville
SET nom= "Trouville-sur-Mer"
WHERE nom= "Trouville";
INSERT INTO Ville
VALUES (9, "Mezidon-Vallee-dâAuge", 14270, 9712) ;
DELETE FROM Ville
WHERE nom = "Mezidon-Canon" OR nom = "Crevecoeur-en-Auge";
Activité 9 - Vérification des enregistrements
Base Collectivites
Indiquez le code SQL permettant de répondre aux consignes suivantes :
- Combien il y a-t-il de départements différents enregistrés dans la base? (réponse : 3)
- Combien il y a-t-il de communes différentes enregistrées dans la base? (réponse : 7)
- Combien il y a-t-il de communes dans lâEure enregistrĂ©es dans la base? (rĂ©ponse : 2)
- Combien il y a-t-il de communes en Seine-Maritime enregistrées dans la base? (réponse : 3)
- Combien il y a-t-il de communes dans le Calvados enregistrées dans la base? (réponse : 2)
RĂ©ponse
1.
SELECT count(*)
FROM Departement;
SELECT count(*)
FROM Ville;
SELECT count(*)
FROM Ville
WHERE idDepartement = 2;
SELECT count(*)
FROM Ville
WHERE idDepartement = 1;
SELECT count(*)
FROM Ville
WHERE idDepartement = 3;
Base de donnée Cinéma
Activité 10 - Base de donnée Cinéma
Dans la cellule ci-dessous, on a chargé la base de donnée Cinema.sqlite
.
Base Cinema
- Combien de relations possÚde la base de données?
- Combien dâattributs possĂšde la relation Artiste?
- Quelle est sa clé primaire?
- Combien dâattributs possĂšde la relation Film?
- Quelle est sa clé primaire?
- Quelle est sa clé étrangÚre?
- Quelle est la référence de la clé étrangÚre.
- En procĂ©dant de la mĂȘme façon pour toutes les tables, reprĂ©sentez le schĂ©ma relationnel sous forme graphique, en faisant bien ïŹgurer les relations entre les clĂ© primaires et clĂ©s Ă©trangĂšres.
RĂ©ponse
- 5 relations : Artiste, Cinema, Film, Role, Seance.
- Artiste Ă 3 attributs : nom, prenom, anneeNaissance.
- La clĂ© primaire dâArtiste est nom.
- Film a 4 attributs : idFilm, titre, annee, nomRealisateur.
- La clé primaire de Film est idFilm.
- La clé étrangÚre de Film est nomRealisateur.
- La clĂ© Ă©trangĂšre de Film fait rĂ©fĂ©rence Ă lâattribut nom de la relation Artiste.
ActivitĂ© 11 - RequĂȘtes simples
Base Cinema
Indiquez le code SQL permettant dâafficher :
- les titres des ïŹlms triĂ©s par ordre alphabĂ©tique.
- Les prénoms, noms et année de naissance des artites nés avant 1950.
- Les cinémas qui sont situés dans le 12Úme arrondissement.
- Les artistes dont le nom commence par la lettre H (on utilisera la commande LIKE).
- Les acteurs dont on ignore la date de naissance (cela signiïŹe que la valeur nâexiste pas).
- Le nombre de fois oĂč Bruce Willis a jouĂ© le rĂŽle de McLane (on utilisera la commande UPPER() pour sâaffranchir de la casse).
RĂ©ponse
1.
SELECT titre
FROM Film
ORDER BY titre;
SELECT prenom, nom, anneeNaissance
FROM artiste
WHERE anneeNaissance <= 1950;
SELECT nomCinema
FROM Cinema
WHERE arrondissement = 12;
SELECT prenom, nom
FROM Artiste
WHERE nom LIKE "H %";
SELECT prenom, nom
FROM Artiste
WHERE anneeNaissance IS NULL;
SELECT count(idFilm))
FROM Role
WHERE UPPER(nomRole) = "MCLANE" AND UPPER(nomActeur) = "WILLIS";
ActivitĂ© 12 - RequĂȘtes avec jointure
On rapelle quâune jointure consiste Ă rapprocher les clĂ© primaire et Ă©trangĂšre de deux relations.
La syntaxe est la suivante :
SELECT attribut
FROM relation1 JOIN relation2
ON relation1.cle1 = relation2.cle2;
Base Cinema
Indiquez le code SQL permettant de répondre aux questions suivantes :
- Quel est le nom et le prĂ©nom de lâacteur qui a jouĂ© Tarzan (pensez Ă la commande UPPER()).
- Quelle est lâannĂ©e de naissance du rĂ©alisateur de Reservoir Dogs?
- Quels sont les titres des ïŹlms dans lesquels a jouĂ© Woody Allen. Donnez aussi le rĂŽle jouĂ©.
- Quels ïŹlms peut-on voir au cinĂ©ma Rex? (Attention aux doublons)
- Quels ïŹlms peut-on voir Ă 15h dans un cinĂ©ma parisien?
- Quels sont les cinĂ©mas (nom, adresse et arrondissement) qui diïŹusent des ïŹlms le matin.
- Quels sont les cinĂ©mas (nom, adresse et arrondissement) qui diïŹusent des ïŹlms le matin.
Indiquez aussi le titre du ïŹlm. 8.Quels ïŹlms peut-on voir dans un cinĂ©ma du 12 e arrondissement? On donnera le titre du ïŹlm, le cinĂ©ma dans lequel il est jouĂ© et son adresse. - Quels sont les nom et prĂ©nom des acteurs qui ont jouĂ© dans le ïŹlm Vertigo.
- Quel rĂ©alisateur a tournĂ© dans ses propres ïŹlms? Donnez le nom, le rĂŽle et le titre des ïŹlms.
- OĂč peut-on voir le ïŹlm Pulp Fiction? On donnera le nom, lâadresse du cinĂ©ma et numĂ©ro de la sĂ©ance.
- OĂč peut-on voir un ïŹlm avec Clint Eastwood? On donnera le titre du ïŹlm, le nom et lâadresse du cinĂ©ma, ainsi que lâheure de dĂ©but du ïŹlm.
- Quels sont les cinĂ©mas (nom, adresse et arrondissement) ayant une salle de plus de 150 places et passant un ïŹlm avec Bruce Willis?
RĂ©ponse
1.
SELECT nom,prenom
FROM Artiste
JOIN Role ON Artiste.nom = Role.nomActeur
WHERE UPPER(nomRole) = "TARZAN";
â Lambert Christophe
SELECT anneeNaissance
FROM Artiste
JOIN Film ON Artiste.nom = Film.nomRealisateur
WHERE titre = "Reservoir Dogs";
â 1948
SELECT titre, nomRole
FROM Film
JOIN Role ON Film.idFilm = Role.idFilm
WHERE nomActeur = "Allen";
â Manhattan, Davis
â Annie Hall, Jonas
Activité 13 - Modification de la base cinéma
Base Cinema
- On souhaite insĂ©rer un nouvel artiste. Il sâagit de Ridley Scott, nĂ© en 1937. Indiquez la requĂȘte SQL permettant de rĂ©aliser cette opĂ©ration.
- Ridely Scott est le rĂ©alisateur du ïŹlm Blade Runner, sorti en 1982. Indiquez la requĂȘte SQL permettant de saisir ce nouvel enregistrement.
- Les acteurs principaux sont Harisson Ford (nĂ© en 1942) dans le rĂŽle de Rick Deckard et Rutger Hauer (nĂ© en 1944) dans le rĂŽle de Roy Batty. Indiquez la requĂȘte SQL permettant de saisir ces nouveaux enregistrements.
- Mark Hamill (nĂ© en 1951), Harisson Ford (nĂ© en 1942) et Carrie Fisher (nĂ©e en 1956) sont les acteurs principaux du ïŹlm Lâempire contre attaque rĂ©alisĂ© en 1980 par Irvin Kershner (nĂ© en 1923). Indiquez les requĂȘtes SQL permettant de saisir ces enregistrements. Indiquez lâordre dans lequel il faut remplir les relations.
- Le rĂ©alisateur moldave Mevatlave Kraspeck est dĂ©cĂ©dĂ© brutalement hier Ă lâĂąge de 103 ans. Le Rex dĂ©cide de lui rendre hommage en diïŹusant le ïŹlm Gant, Savon, Serviette et Ponge tournĂ© en 1957 avec la star du cinĂ©ma muet Agathe Zeblouse (nĂ©e en 1932) dans la salle 1 de 13h Ă 16h, le ïŹlm Shower on the Beach tournĂ© en 1963 avec Camille HonnĂȘte (nĂ©e en 1940) dans la salle 1 de 16h Ă 18h et Bains Moussants avec Jacques CĂ©lĂšre (nĂ© en 1945 et dĂ©cĂ©dĂ© trop vite en 1969) tournĂ© en 1967 dans la salle 2 de 15h Ă 18h. Indiquez les requĂȘtes SQL permettant de modiïŹer les sĂ©ances du cinĂ©ma Rex.
RĂ©ponse
1.
INSERT INTO Artiste
VALUES(âScottâ, "Ridley", 1937);
INSERT INTO Film
VALUES(143, "Blade Runner", 1982, "Scott");
INSERT INTO Artiste
VALUES("Ford", "Harisson", 1942);
INSERT INTO Artiste
VALUES("Hauer", "Rutger", 1944);
INSERT INTO Role
VALUES("Rick Deckard", 143, "Ford");
INSERT INTO Role
VALUES("Roy Batty", 143, "Hauer");
INSERT INTO Artiste
VALUES("Hamill", "Mark", 1951)
INSERT INTO Artiste
VALUES("Fisher", "Carrie", 1956);
INSERT INTO Artiste
VALUES("Kershner", "Irvin", 1923);
INSERT INTO Film
VALUES(144, "L empire contre attaque", 1980, "Kershner");
INSERT INTO Role
VALUES("Luke Skywalker", 144, "Hamill");
INSERT INTO Role
VALUES("Princesse Leia", 144, "Fisher");
INSERT INTO Role
VALUES("Han Solo", 144, "Ford");
Base de données Voyageurs
Activité 14 - Base Voyageurs
Schéma de la base
Voyageur (idVoyageur, nom, prénom, ville, région)
Séjour (idSéjour, #idVoyageur, #codeLogement, début, fin)
Logement (code, nom, capacité, type, lieu)
Activité (codeLogement, codeActivité, description)
- Exprimer les requĂȘtes suivantes sans utiliser d'imbrication.
Nom des villes
Base Voyageurs
RĂ©ponse
select ville from Voyageur
Nom des logements en Bretagne
Base Voyageurs
RĂ©ponse
select nom from Logement
where lieu = 'Bretagne'
Nom des logements dont la capacité est inférieure à 20
Base Voyageurs
RĂ©ponse
select nom from Logement
where capacité < 20
Description des activités de plongée
Base Voyageurs
RĂ©ponse
select description from Activité
where codeActivité = 'Plongée'
Nom des logements avec piscine
Base Voyageurs
RĂ©ponse
select nom from Logement as l, Activité as a
where l.code = a.codeLogement
and a.codeActivité = 'Piscine'
Nom des voyageurs qui sont allés en Corse
Base Voyageurs
RĂ©ponse
select v.prénom, v.nom
from Logement as l, SĂ©jour as s, Voyageur as v
where l.code = s.codeLogement
and s.idVoyageur =v.idVoyageur
and lieu= 'Corse'
Les voyageurs qui sont allés ailleurs qu'en Corse
Base Voyageurs
RĂ©ponse
select v.prénom, v.nom
from Logement as l, SĂ©jour as s, Voyageur as v
where l.code = s.codeLogement
and s.idVoyageur =v.idVoyageur
and lieu != 'Corse'
Nom des logements visités par un auvergnat
Base Voyageurs
RĂ©ponse
select l.nom as nomLogement, v.nom
from Logement as l, SĂ©jour as s, Voyageur as v
where l.code = s.codeLogement
and s.idVoyageur =v.idVoyageur
and région= 'Auvergne'
Nom des logements et des voyageurs situĂ©s dans la mĂȘme rĂ©gion
Base Voyageurs
RĂ©ponse
select l.nom as nomLogement, v.nom
from Logement as l, Voyageur as v
where région=lieu
Les paires de voyageurs (donner les noms) qui ont sĂ©journĂ© dans le mĂȘme logement
Base Voyageurs
RĂ©ponse
select distinct l.nom as nomLogement, v.nom as voyageur
from Logement as l, SĂ©jour as s1, Voyageur as v, SĂ©jour as s2
where l.code = s1.codeLogement
and l.code = s2.codeLogement
and s1.idVoyageur =v.idVoyageur
and s2.idVoyageur =v.idVoyageur
and s1.idSĂ©jour != s2.idSĂ©jour
Les voyageurs qui sont allĂ©s (au moins) deux fois dans le mĂȘme logement
Base Voyageurs
RĂ©ponse
select distinct l.nom as nomLogement, v.nom as voyageur
from Logement as l, SĂ©jour as s1, Voyageur as v, SĂ©jour as s2
where l.code = s1.codeLogement
and l.code = s2.codeLogement
and s1.idVoyageur =v.idVoyageur
and s2.idVoyageur =v.idVoyageur
and s1.idSĂ©jour != s2.idSĂ©jou
Les logements qui ont reçu (au moins) deux voyageurs différents
Base Voyageurs
RĂ©ponse
select distinct l.nom as nomLogement, v1.nom as voyageur1, v2.nom as voyageur2
from Logement as l, SĂ©jour as s1, Voyageur as v1, SĂ©jour as s2, Voyageur as v2
where l.code = s1.codeLogement
and l.code = s2.codeLogement
and s1.idVoyageur =v1.idVoyageur
and s2.idVoyageur =v2.idVoyageur
and s1.idVoyageur != s2.idVoyageur
- Pour les requĂȘtes suivantes, en revanche, vous avez droit Ă l'imbrication (il serait difficile de faire autrement).
Nom des voyageurs qui ne sont pas allés en Corse
Base Voyageurs
RĂ©ponse
select v.prénom, v.nom
from Voyageur as v
where not exists (select ''
from Logement as l, SĂ©jour as s
where l.code = s.codeLogement
and s.idVoyageur =v.idVoyageur
and lieu='Corse')
Noms des voyageurs qui ne vont qu'en Corse s'ils vont quelque part
Base Voyageurs
RĂ©ponse
select v.prénom, v.nom
from Voyageur as v
where not exists (select ''
from Logement as l, SĂ©jour as s
where l.code = s.codeLogement
and s.idVoyageur =v.idVoyageur
and lieu != 'Corse')
Nom des logements sans piscine
RĂ©ponse
select l.nom
fromLogement as l
where not exists (select ''
from Activité as a
where l.code= a.codeLogement
and a.codeActivité= 'Piscine')
Nom des voyageurs qui ne sont allés nulle part
Base Voyageurs
RĂ©ponse
select v.prénom, v.nom
from Voyageur as v
where not exists (select ''
from SĂ©jour as s
where s.idVoyageur =v.idVoyageur)
Les logements oĂč personne n'est allĂ©
Base Voyageurs
RĂ©ponse
select l.nom
from Logement as l
where not exists (select ''
from SĂ©jour as s
where l.code =s.codeLogement)
Les voyageurs qui n'ont jamais eu l'occasion de faire de la plongée
Base Voyageurs
RĂ©ponse
select v.prénom, v.nom
from Voyageur as v
where not exists (select ''
from Séjour as s, Activité as a
where s.idVoyageur =v.idVoyageur
and s.codeLogement=a.codeLogement
and a.codeActivité='Plongée')
Les voyageurs et les logements oĂč ils n'ont jamais sĂ©journĂ©
Base Voyageurs
RĂ©ponse
select v.nom as nomVoyageur, l.nom as nomLogement
from Voyageur as v, Logement as l
where not exists (
select ''
from SĂ©jour as s
where s.codeLogement = l.code
and s.idVoyageur =v.idVoyageur)
Les logements oĂč tout le monde est allĂ©
Base Voyageurs
RĂ©ponse
select l.nom
from Logement as l
where not exists ( select *
from Voyageur as v
where not exists (
select * from SĂ©jour as s
where s.idVoyageur = v.idVoyageur
and s.codeLogement = l.code
)
Base de données Films
Activité 15 - Recherches sur des films et acteurs
Sql
1 - Nom et annĂ©e de naissance des artistes nĂ©Ìs avant 1950
select * from Artiste
where annéeNaiss < 1950
2 - Titre de tous les drames
select titre from Film
where genre = 'Drame'
3 - Quels rÎles a joué Bruce Willis
select nomRĂŽle
from RĂŽle as r, Artiste as a
where idActeur =idArtiste and nom = 'Willis'
4 - Qui est le réalisateur de Memento
select prénom, nom
from Film f, Artiste a
where f.titre = 'Memento'
and f.idRĂ©alisateur = a.idArtiste
5 - Qui a joué le rÎle de Chewbacca?
select prénom, nom
from RĂŽle as r, Artiste as a
where idActeur =idArtiste
and nomRĂŽle = 'Chewbacca'
6 - Dans quels films Bruce Willis a-t-il jouĂ©Ì le role de John McClane ?
select titre
from Film as f, RĂŽle as r, Artiste as a
where f.idFilm=r.idFilm
and idActeur =idArtiste
and nom = 'Willis' and nomRĂŽle='John McClane'
7 - Nom des acteurs de 'Sueurs froides'
select prénom, nom, nomRÎle
from Film as f, RĂŽle as r, Artiste as a
where titre = 'Sueurs froides'
and f.idFilm = r.idFilm
and r.idActeur = a.idArtiste
8 - Films dont le rĂ©alisateur est Tim Burton, et lâun des acteurs Jonnhy Depp.
select titre
from Film as f, RĂŽle as r, Artiste as a, Artiste as b
where f.idFilm = r.idFilm
and r.idActeur = a.idArtiste
and f.idRĂ©alisateur = b.idArtiste
and b.nom='Burton'
and a.nom='Depp'
9 - Titre des films dans lesquels a jouĂ©Ì Woody Allen. Donner aussi le rĂŽle.
select titre, nomRĂŽle
from Film as f, RĂŽle as r, Artiste as a
where f.idFilm = r.idFilm
and r.idActeur = a.idArtiste
and a.nom='Allen'
and a.prénom='Woody'
10 - Quel metteur en scĂšne a tournĂ©Ì dans ses propres films ? Donner le nom, le rĂŽle et le titre des films.
select prénom, nom, nomRÎle, titre
from RĂŽle as r, Film as f, Artiste as a
where f.idFilm = r.idFilm
and f.idRĂ©alisateur = a.idArtiste
and r.idActeur = a.idArtiste
11 - Titre des films de Quentin Tarantino dans lesquels il nâa pas jouĂ©
select titre
from Film as f1, Artiste as s
where f1.idRĂ©alisateur=a.idArtiste
and nom='Tarantino'
and not exists (select '' from RĂŽle r
where f.idFilm = r.idFilm
and r.idActeur=a.idArtiste)
12 - Quel metteur en scĂšne a tournĂ©Ì en tant quâacteur ? Donner le nom, le rĂŽle et le titre des films dans lesquels cet artiste a jouĂ©.
select prénom, nom, nomRÎle
from RĂŽle as r, Film as f1, Film as f2, Artiste as a
where f1.idFilm = r.idFilm
and f2.idRĂ©alisateur = a.idArtiste
and r.idActeur = a.idArtiste
13 - Donnez les films de Hitchcock sans James Stewart
select titre from Film as f, Artiste as a
where f.idRĂ©alisateur = a.idArtiste
and a.nom='Hitchcock'
and not exists (select '' from Artiste as a2, RĂŽle as r
where a2.idArtiste = r.idActeur
and r.idFilm=f.idFilm
and nom='Stewart')
14 - Dans quels films le rĂ©alisateur a-t-il le mĂȘme prĂ©Ìnom que lâun des interprĂštes ? (titre, nom du rĂ©alisateur, nom de lâinterprĂšte). Le rĂ©alisateur et lâinterprĂšte ne doivent pas ĂȘtre la mĂȘme personne.
select a1.prénom as prénom1, a1.nom as nom1, titre,
a2.prénom as prénom2, a2.nom as nom2
from RĂŽle as r, Film as f, Artiste as a1, Artiste as a2
where f.idFilm = r.idFilm
and a1.idArtiste != a2.idArtiste
and f.idRĂ©alisateur = a1.idArtiste
and r.idActeur = a2.idArtiste
and a1.prénom = a2.prénom
15 - Les films sans rĂŽle
select titre
from Film
where idFilm not in (select idFilm from RĂŽle)
16 - Quels acteurs nâont jamais rĂ©alisĂ© de film ?
select prénom, nom
from Artiste as a
where not exists (select 'c' from Film as f
where a.idArtiste = f.idRĂ©alisateur)
17 - Quelle est la moyenne des notes de Memento
select avg (note) as moyenne
from Film as f, Notation as n
where f.idFilm=n.idFilm
and f.titre='Memento'
18 - id, Nom et prĂ©nom des rĂ©alisateurs, et nombre de films quâils ont tournĂ©s.
select idArtiste, nom, prénom, count(titre) as nbFilms
from Artiste as a, Film as f
where f.idRĂ©alisateur = a.idArtiste
group by idArtiste
19 - Nom et prénom des réalisateurs qui ont tourné au moins deux films.
select nom, prénom
from Artiste as a, Film as f
where f.idRĂ©alisateur = a.idArtiste
group by nom, prénom
having count(*) > 1
20 - Quels films ont une moyenne des notes supérieure à 7
select titre, avg (note) as moyenne
from Film as f, Notation as n
where f.idFilm=n.idFilm
group by f.idFilm
having avg(note) > 7
SQL Murder Mystery
Activité 16 - SQL Murder Mystery
Un meurtre a été commis. Comme vous ne prenez jamais de notes, vous ne vous souvenez plus du nom du meurtrier. Vous vous souvenez juste que le meurtre a eu lieu le 15 janvier 2018 dans la ville de SQL City.
Vous disposez ensuite de la base de données schématisée ici :
A vous de jouer :
Entrez ici vos requĂȘtes pour mener l'enquĂȘte:
Vous rentrerez ensuite votre solution ici :
Votre solution:
Source: SQL Murder Mystery