Initiation aux Bases de Données

Transcription

Initiation aux Bases de Données
Initiation aux Bases de Données
NFP107
TPs
CNAM Paris
Nicolas.Travers (at) cnam.fr
Table des matières
1 TP1 - Installation et requêtes simples
1.1 Bien débuter . . . . . . . . . . . .
1.1.1 Installation du TP . . . . .
1.1.2 Utilisation du TP . . . . .
1.2 Requêtes simples (sans jointures)
1.3 Jointures simples . . . . . . . . .
.
.
.
.
.
3
3
3
3
3
4
2 TP2 - Requêtes complexes
2.1 Requetes imbriquées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Agrégats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
5
3 TP3 - Requêtes et mises à jour
3.1 Mises à jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 TP1 - Installation et requêtes simples
1.1
1.1.1
Bien débuter
Installation du TP
MySQL est un serveur de base de données gratuit et facile d’accès. Nous allons l’utiliser dans le
cadre de ce TP pour une utilisation à domicile (fonctionne également sur les machines du Cnam).
1. Télécharger les données relatives au TP sur Pleiad section “Enoncé des TP”. Téléchargez “NFP107_data.sql”
et “NFP107_schema.sql”.
2. Télécharger le logiciel EasyPHP (logiciel gratuit permettant d’avoir un serveur Web, et entre
autre un serveur MySQL intégré). Prenez la dernière version disponible sur la page suivante :
http://www.easyphp.org/fr/download.php
3. Installer l’application en suivant les instructions ;
4. Vérifier que EasyPHP tourne sur votre machine ;
5. Ouvrez votre navigateur et aller sur l’url suivante : http://localhost/home
Vous y trouverez la page d’administration d’EasyPHP. Cliquez sur PhpMyAdmin (traditionnellement l’URL est : http://localhost/phpmyadmin ou http://localhost/mysql).
Une nouvelle page va s’ouvrir vous permettant de manipuler votre base de données.
6. Dans le formulaire “Créer une base de données”, entrez la valeur ”NFP107”. Ce qui créera une
nouvelle instance de base de données : NFP107.
7. Cliquer sur l’onglet “Importer”
8. Dans “Fichier à importer”, aller parcourir vos fichiers pour retrouver “NFP107_schema.sql” du
TP que vous avez téléchargé en étape 1.
9. Dans “Fichier à importer”, aller parcourir vos fichiers pour retrouver “NFP107_data.sql” du TP
que vous avez téléchargé en étape 1.
10. Vous avez fini d’installer la base de données du TP.
1.1.2
Utilisation du TP
Pour vous connecter à la base de données :
1. Assurez-vous de bien avoir effectué l’installation ;
2. Vérifiez que EasyPhp est lancé ;
3. Sélectionnez dans le menu de droite la base de données “NFP107” ;
4. Cliquez sur l’onglet “SQL” ;
5. Pour chaque requête, placez-la dans le formulaire et appuyez sur “Exécuter” ;
Vous pouvez maintenant effectuer le TP.
1.2
Requêtes simples (sans jointures)
1. Donner le n-uplet correspondant à l’album d’identifiant ’375’ ;
1.3. JOINTURES SIMPLES
CHAPITRE 1. TP1 - INSTALLATION ET REQUÊTES SIMPLES
2. Donner les titres des albums réalisés par l’artiste d’identifiant 1167 ;
3. Donner les identifiants d’albums dont le prix est inférieur à 12 euros ;
4. Donner les albums qui sont sortis après le 18 mai 1999 ;
5. Donner les identifiant d’artiste dont l’album a atteint un rank supérieur ou égal à 30000 ;
6. Donner la liste (en éliminant les doublons) des asin des albums qui ont plus de 2 cds ;
7. Donner les titres des albums dont le titre commence par la lettre ’za’ et le prix est supérieur à 20
euros ;
8. Donner les identifiants des artistes ayant sorti un album classé entre la position 800 et 1000, trié
par date de sortie.
1.3
Jointures simples
1. Donner les titres des chansons de l’album qui a pour titre ’zavlet’ ;
2. Donner les titres (distincts) des albums qui ont plus de 2 cd ;
3. Donner le nom des compositeurs de musique de type ’hr’ ;
4. Donner les trois albums (titre et prix) ayant les prix les plus bas (utiliser rownum qui numérote
les lignes du résultat) ;
5. Donner les noms des artistes qui ont plusieurs labels ;
6. Donner le titre de l’album, le titre de sa première chanson, son style, pour les albums de rank
inférieur à 90.
2 TP2 - Requêtes complexes
2.1
Requetes imbriquées.
1. Donner les titres des albums contenant le prix le plus élevé (ne pas tenir compte des albums
dont le prix n’est pas renseigné. Faire de 3 façons différentes ;
2. Donner les titres des albums sans style (ou dont le style n’a pas été précisé) ;
3. Donner les noms des artistes qui ont produit un album sous le meme label que l’artiste de nom
’lfc’ (attention, ’lfc’ peut avoir fait des albums sous différents labels) ;
4. Donner les titres des albums sortis le même jour qu’un album de musique de style ’hr’. Faire
avec et sans requetes imbriquées ;
5. Donner les titres des albums pour lesquels il n’existe pas de deuxième cd. Faire de 3 façons
différentes ;
2.2
Agrégats
1. Donner le nombre d’albums stockés dans la base ;
2. Donner le prix moyen d’un album ;
3. Donner le nombre d’albums ayant au moins 2 cds ;
4. Donner les titres des albums ayant le prix le plus bas ;
5. Donner l’asin et le nombre de chansons de chaque album ayant plus de 18 chansons en tout
(attention un album peut-etre constitué de plusieurs cds !) ;
6. Donner pour chaque nom de label, le titre du meilleur album (rang le plus bas), ainsi que ce
rang ;
2.2. AGRÉGATS
CHAPITRE 2. TP2 - REQUÊTES COMPLEXES
3 TP3 - Requêtes et mises à jour
3.1
Mises à jour
Exercices.
1. Créer une table ’Label_XXX’ (Remplacez XXX par votre nom) avec les attributs :
– ’name’ : nom du label, chaine de caractères de longueur 40 ;
– ’country’ : pays d’origine de ce label, chaine de caractères de longueur 30 ;
– ’nb_artists’ : nombre d’artistes ayant signé pour ce label, entier ;
– ’weight’ : chiffre d’affaires en milliards de dollards, réel ;
2. Vérifier que la table apparaît dans l’ensemble des tables dont vous êtes propriétaire, ainsi que
les attributs (et formats) de cette table ;
3. Ajouter les n-uplets correspondant aux labels :
– ’Sony’ label Japonais qui présente 327 artistes pour un C.A. de 2.38 M$ ;
– ’EMI’ label Américain, qui présente 268 artistes pour un C.A. de 1.63 M$ ;
– ’Capitol’ label Américain qui présente 112 artistes pour un C.A. de 0.87M$ ;
– ’Polydor’ label français qui présente 37 artistes pour un C.A. de 0.11 M$ ;
4. Supprimer le n-uplet correspondant au label ’Polydor’ ;
5. Mettre à jour le C.A. de ’Sony’ à 2.64 M$ ;
6. Mettre à jour le nombre d’artistes de ’Capitol’ à 266 artistes ainsi que son chiffre d’affaires à 1.54
M$ ;
7. Supprimer la table ’Label_XXX’ que vous venez de créer ;
8. Creer une table ’Client_XXX’ avec les attributs :
– ’numero’, nombre de longueur 6, clé primaire ;
– ’nom’, une chaine de caractère de longueur 63, les valeurs nulles ne sont pas autorisées ;
– ’prenom” , une chaine de caractère de longueur 63 ;
– ’naissance’, la date de naissance, de type date ;
9. Ajouter une colonne ’code_postal’ : une chaine de caractère de taille 5 ;
10. Modifier le ’nom’ pour qu’il soit de taille 50 ;
11. Creer une table ’Commande_XXX’ ayant les attributs suivant :
– ’numero’, un nombre de taille 8, clé primaire ;
– ’jour’, de type date et ayant comme valeur par défaut la date système ;
– ’client’, un nombre de taille 6 une clé étrangère référençant le numero dans la table ’Client_XXX’ ;
12. Ajouter une contrainte d’unicité à la colonne client de la table commandes ;
13. Quels sont les indexes qui existent pour les tables clients et commandes. (voir les tables all_indexes
et all_ind_columns ).
Que remarquez vous ?
14. Créer un indexe sur la colonne prenom de la table ’Client_XXX’ ;
15. Insérer des tuples dans les tables ’Client_X’ et ’Commande_XXX’. Vérifier les contraintes d’intégrtitè référentielles.

Documents pareils