Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Ecole Nationale Polytechnique
Spécialité : Génie industriel
Option : management de l’innovation
L’étudiante :
ABDELLI Omyma Mariem
Année universitaire : 2017/2018
1) Objectif du TP :
Créer et manipuler une base de données MySQL.
Se familiariser avec l’interface du logiciel HeidiSQL.
Apprendre quelques requêtes de base du langage SQL.
2) Principe de TP :
Le but de ce TP est de créer une base de données qui contient quelques
informations nécessaires à l’élaboration et à la gestion d’une bibliothèque
musicale. Les informations manipulées concernent une liste d’artistes, leurs
albums et les chansons qu’ils contiennent.
3) Expérimentation :
Etape1 :
1*création de la base de données sous le
nom : « Bibliothèque_musicale ».
Par clique droite on choisit Créer un (e) nouveau (el/elle) base de
données.
On écrit le nom et on clique sur OK.
2* création des tables Chanson, Artiste et Album.
Créer un (e) nouveau (el/elle) Tables.
On choisit le nom de la tables aussi leur attributs (nom, type, taille et
l’attribut « primary key » et on obtient ces tables :
Schéma relationnel :
3* Insertion des données de chaque table.
Etape2 :
En utilisant l’onglet « requête » de HeidiSQL, on a exprimé les
requêtes suivantes en langage SQL :
a) ‘Afficher la liste de toutes les chansons sorties en 2017 et les
classer par ordre alphabétique du titre.’
La requête :
SELECT titre_chanson, date_sortie_chanson
FROM chanson
WHERE date_sortie_chanson<='2017-12-31' AND date_sortie_chanson>='2017-01-
01'
b) ‘Donner le nom de l’artiste de la chanson « Dive ».’
La requête :
SELECT nom_artiste
FROM chanson JOIN artiste ON artiste.id_artiste=chanson.FK_chanson_artiste
WHERE titre_chanson='dive'
c) ‘La liste des chansons de l’album « Woodstock ».’
La requête :
SELECT titre_chanson
FROM chanson JOIN album ON
album.id_album=chanson.FK_chanson_album
WHERE titre_album='woodstock'
d) ‘Les noms des artistes produits sous le label « Interscope
Records ».’
La requête :
SELECT DISTINCT nom_artiste
FROM chanson JOIN artiste JOIN album ON
chanson.FK_chanson_artiste=artiste.id_artiste AND
chanson.FK_chanson_album=album.id_album
WHERE label='interscope records'
e) ‘Les noms des artistes qui ont chanté des chansons dont le titre
commence par la lettre « J ». Afficher aussi les titres de ces
chansons triées par ordre alphabétique.
La requête :
SELECT Nom_artiste, titre_chanson
FROM chanson JOIN artiste ON
chanson.FK_chanson_artiste=artiste.id_artiste
WHERE titre_chanson LIKE 'j%'
ORDER BY titre_chanson
f) ‘Les noms des artistes qui possèdent un album dans la table
Album. (NOT NULL)’
La requête :
SELECT DISTINCT nom_artiste
FROM chanson NATURAL JOIN artiste NATURAL JOIN album
WHERE titre_album IS NOT NULL
g) ‘Les titres des chansons et leurs durées en minutes de l’album
intitulé « Divide ».’
La requête :
SELECT titre_chanson, durée/60 as duree_minute
FROM chanson JOIN album ON
album.id_album=chanson.FK_chanson_album
WHERE titre_album='Divide'
h) ‘Les chansons qui font partie du même album que la chanson «
Jenny ».’
La requête :
SELECT titre_chanson
from chanson
where FK_chanson_album = (select FK_chanson_album from
chanson where titre_chanson='Jenny')
i) ‘Le nombre de chansons de chaque album ainsi le titre de
l’album.’
La requête :
SELECT titre_album, COUNT(id_album)
FROM chanson JOIN album ON
album.id_album=chanson.FK_chanson_album
group by id_album
j) ‘Le nombre d’artistes qui figurent dans la table chanson.’
La requête :
SELECT COUNT(DISTINCT FK_chanson_artiste)
FROM chanson
k) ‘Les durées moyennes des chansons qui composent des albums
ayant plus de 2 chansons. Afficher aussi le titre de l’album.’
La requête :
SELECT AVG(durée), titre_album
FROM chanson JOIN album ON
album.id_album=chanson.FK_chanson_album
GROUP BY id_album
HAVING COUNT(FK_chanson_album)>'2'
l) ‘Quels sont les artistes ayant sorti des albums à une date
ultérieure à celle de l’album « Woodstcok ». (indication : auto-
jointure, jointure d’une table avec elle-même)
La requête :
SELECT distinct nom_artiste
FROM chanson JOIN artiste JOIN album ON
chanson.FK_chanson_artiste=artiste.id_artiste AND
chanson.FK_chanson_album=album.id_album
WHERE date_sortie_album>(SELECT date_sortie_album
from album
where titre_album='woodstock')
En ajoutant les données dans les tables :
On fait les requêtes suivantes :
m) Les noms des artistes n’ayant aucune chanson enregistrée.
La requête :
SELECT DISTINCT nom_artiste, id_artiste
FROM artiste LEFT outer join chanson on
artiste.id_artiste=chanson.FK_chanson_artiste
where chanson.FK_chanson_artiste IS NULL
n) Les titres des chansons ne faisant partie d’aucun album.
La requête :
SELECT DISTINCT titre_chanson, id_chanson
FROM album right outer join chanson on
album.id_album=chanson.FK_chanson_album
where chanson.FK_chanson_album IS NULL
o) Les titres et les dates de sortie des albums qui ne possèdent
aucune chanson enregistrée dans la table « Chanson ».
La requête :
SELECT DISTINCT titre_album, date_sortie_album
FROM album left outer join chanson on
album.id_album=chanson.FK_chanson_album
where chanson.FK_chanson_album IS NULL