TP1 - Corrigé Manipulations de données

Transcription

TP1 - Corrigé Manipulations de données
TP1 - Corrigé
Manipulations de données
1. Démarrez mysql comme suit :
bash$ mysql -h 127.0.0.1 -u user4 -D db_4 –p
Remarque: le mot de passe est le nom de user. Ici user4
2. Afficher la liste des bases existantes sur votre compte.
Show databases ;
3. Accédez à la base information_schema
Use information_schema
4. Affichez la liste des tables qui s’y trouvent
Show tables ;
5. Affichez maintenant la liste des méta-commandes
\?
6. Comment afficher le « man » de CREATE TABLE ?
\ h CREATE TABLE
7. Accédez à la base db_numUser
Use db_numUser
8. Créez les tables suivantes :
-
PERSONNE(id_personne, nom, prenom)
FILM(idFilm, idRealisateur, titre, genre, annee) où idRealisateur est une clé étrangère qui
fait référence au schéma de relation PERSONNE
JOUER(idActeur, idFilm, rôle) où idActeur et idFilm sont des clés étrangères qui font
respectivment référence aux schémas de relation PERSONNE et FILM
PROJECTION(idCinema, idFilm, jour) où idCinéma et idFilm sont des clés étrangères qui font
respectivement référence aux schémas de relation CINEMA et FILM.
CINEMA(idCinema, nom, adresse)
Il est demandé de bien renseigner :
-
Le domaine de définition de chacun des attributs (i.e. leur type)
La clé primaire de chaque relation
Les contraintes d’intégrité référentielles (i.e. clés étrangères)
CREATE TABLE personne (
id_personne INTEGER PRIMARY KEY,
1
nom VARCHAR(50),
prenom VARCHAR(50)
Create table film (id_film integer primary key, id_realisateur integer references personne, titre
varchar, genre varchar, annee integer) ;
Create table cinema (id_cinema integer primary key, nom varchar, adresse varchar);
Create table jouer (id_acteur integer references personne, id_film integer references film, role
varchar, primary key(id_acteur, id_film));
Create table projection (id_cinema integer references cinema, id_film integer references film,
jour date, primary key (id_cinema, id_film, jour));
9. Affichez la liste des tables créées
10. Créez un fichier cinema.txt permettant de remplir la table cinema avec les données de la figure
3.22. Le séparateur de colonnes est la tabulation et le fichier ne doit pas se terminer par une ligne
vide.
11. Remplir la table cinema à partir du fichier que vous venez de créer.
LOAD DATA LOCAL INFILE ″cinema.txt″ INTO TABLE cinema;
12. Faites de même pour les autres tables à partir des fichiers correspondant et se trouvant sur le site
(dans le dossier /tmp/bd/)
13. Créez un script SQL (genBDcine.sql) permettant de régénérer la base de données. Ce fichier,
composé de trois parties, doit permettre :
- D’effacer chacune des tables (drop table jouer…)
- De créer chacune des tables comme en 4. (create table jouer…)
- De remplir chacune des tables. (load dara local infile …)
14. Restaurer la base de données en utilisant ce script.
mysql> source genDBcine.sql ;
15. Nous voulons supprimez l’acteur john travolta de la base. Quelles opérations sont nécessaires
pour réaliser cela ?
16.
-
Modifiez le script ci-dessus pour prendre en compte les contraintes suivantes :
Le nom et le prénom d’une personne ne peuvent être NULL
Le titre d’un film doit également être renseigné
Quand une personne est supprimée de la table personne, les références à son identifiant dans la
colonne id_realisateur de la table film doivent automatiquement prendre la valeur NULL
La suppression d’une personne, d’un cinema ou d’un film doit automatiquement entrainer la
suppression des lignes associées dans les tables jouer et projection.
Restaurez la base avec la nouvelle version du script genBDcine.sql et tester chacune des
contraintes introduites.
2
Ecrivez les requêtes suivantes :
1. Sélectionnez dans la table FILM les films qui sont du genre Drame et Policier
SELECT * FROM film WHERE genre =’Drame’ OR genre=’Poilicier’;
3
2. Supprimez les enregistrements de la table FILM datant d’avant 1995
DELETE FROM film WHERE annee<1995 ;
3. Supprimez la table FILM
DROP TABLE film ;
4. Restaurez la table FILM grâce à un script SQL. Que contiendra ce script ?
Cf. script de la question 16
5. Affichez le contenu de la table PERSONNE
SELECT * FROM personne ;
6. Ajouter ce nouvel enregistrement dans la table FILM :
« 12 22 ‘L’age de glace 4’ ‘Animation’ 2011»
INSERT INTO film VALUES(12, 22, ‘L’’age de glace 4’, ‘Animation, 2011) ;
4
5