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