Vous êtes sur la page 1sur 10

5 octobre 2020 EP2  Interrogation des Bases de Données

TP 1
Utilisation de phpMyAdmin et
Premiers pas avec une base de données

Les chiers nécessaires au bon déroulement des TPs sont déposés dans l'espace de cours Célène. Pour y avoir
accès, vous devez vous inscrire au cours M1 - EP2 Interrogation de bases de données.
Exercice 1. Importer une base de données sous phpMyAdmin
Pour illustrer ce cours de bases de données, nous allons utiliser l'interface phpMyAdmin avec un SGBD MySQL. En
salles TPs, vous pouvez, sous Linux en utilisant la console, taper la commande sudo /opt/lampp/xampp start.
Vous pouvez également installer le SGBD de votre choix. Une solution pratique peut être le téléchargement et le
lancement (sur votre clé USB par exemple) de USBWebServer (http://www.usbwebserver.net/webserver/).

Figure 1  Page d'accueil de PhpMyAdmin


Dans la suite, nous vous expliquons comment créer une nouvelle base de données sous PHPMyAdmin
Lancez phpMyAdmin dans USBWebServer.
La page qui permet de gérer votre base de données comporte :
 un menu gauche : vos bases de données et les noms des tables qu'elles comprtent, s'il y en a!
 Un menu horizontal : en haut de la page de droite
 Ce menu dière suivant que l'on clique (dans le menu de gauche) sur le nom de la base de données
ou sur le nom d'une table
1. Dans votre disque U :, créez un répertoire de travail nommé TP_BD et copiez les chiers recettes1.sql
et recettes2.sql donnés sur Célène.
Ces chiers .sql sont des chiers "texte" (on peut les ouvrir avec notepad++ par exemple); ils contiennent
les requêtes SQL qui permettent de créer une base de données servant de support à ce TP.
2. Dans la zone de texte "Créer une base de données", tapez le nom de la base de données : recettes,
puis cliquez sur "Créer".
Cliquez sur l'onglet "Importer" puis allez dans "emplacement du fichier texte" et cliquez sur "parcourir"
pour indiquer le chemin du chier recettes1.sql (U:\TP_BD\recettes1.sql)
Cliquez sur "exécuter".
Note : Vous pouvez arriver au même résultat que l'onglet Importer avec l'onglet SQL : ouvrez le chier
SQL avec un éditeur, copiez le contenu puis collez le contenu dans l'onglet SQL et enn exécutez. Puis

ème
Licence Informatique 2 année - Y. Sam 1 / 10
5 octobre 2020 EP2  Interrogation des Bases de Données

cliquez sur l'onglet structure : vous devez avoir l'achage ci-dessous (excepté le nom de la base de données
qui n'est pas recette mais votre nom de login).

Figure 2  Achage de la structure de la BD recettes

3. Le menu de gauche liste le nom des tables contenues dans la base de données. Etudiez un moment les
menus proposés selon qu'on clique sur le nom de la base ou sur le nom de la table (à gauche de la page).
Si on clique sur le nom de la base

Figure 3  Menu contextuel pour une BD

Onglet Usage
Structure Voir la structure de la base de données
SQL Ecrire des requêtes SQL
Exporter Exporter votre base de données sous la forme de requêtes dans un chier texte.
Ceci permet de sauvegarder votre base de données et de la déplacer (par exemple,
pour travailler sur un autre ordinateur).
Rechercher Faire une recherche dans la base de données.
Requête Faire une requête grâce à l'aide d'une interface graphique.
Opérations Créer une nouvelle table, changer le nom de la BD etc.
Supprimer Supprimer la BD

Si on clique sur le nom d'une table puis sur l'onglet structure

Figure 4  Menu contextuel pour une table

ème
Licence Informatique 2 année - Y. Sam 2 / 10
5 octobre 2020 EP2  Interrogation des Bases de Données

Onglet Usage
Structure Voir la structure de la table
Acher Acher les données contenues dans la table
SQL Ecrire des requêtes SQL
Rechercher Faire une recherche dans la table
Insérer Insérer une nouvelle donnée dans la table
Exporter Exporter la table en cours sous la forme de requêtes dans un chier texte
Opérations Ordonner la table, changer son nom, déplacer la table, etc.
Vider Supprimer toutes les données de la table en cours
Supprimer Supprimer la table

4. Regardez la page de droite : elle présente la structure de la BD.


 Enregistrements = Lignes de données contenues dans les diérentes tables.
 Type = type des tables de la base
 Interclassement = jeu de caractère utilisé
Exercice 2. Une première base de donnée : des recettes de cuisine
Le modèle conceptuel (modèle E/A) de cette base de données est le suivant :

Figure 5  MCD de la base de données Recettes


Sa traduction en modèle relationnel donne les relations suivantes :
TypeRecette (idType, nom)
Recette (idRecette, nom, tempsPréparation, tempsCuisson, nbParts, Texte, #idType)
Contient (#idRecette, #idIngrédient, quantité)
Ingrédient (idIngrédient, nom)
1. Cliquez sur le nom de table "recette" puis sur l'onglet Structure. Le tableau présenté sur cette page
décrit les champs (attributs) de la table.

Figure 6  Titres des colonnes du tableau décrivant la structure d'une table

ème
Licence Informatique 2 année - Y. Sam 3 / 10
5 octobre 2020 EP2  Interrogation des Bases de Données

Onglet Usage
Champ Champ de la table. Ici : idRecette
Type Type de la donnée. Ici, int = entier
Interclassement Jeu de caractères utilisé
Attributs Si le champ correspond à un nombre, unsigned permet de préciser que ce sera un
nombre non signé (on ne précise pas le signe + ou devant le nombre)
Null Vaut non si le champ doit toujours avoir une valeur, oui sinon
Défaut Précise la valeur par défaut d'une donnée
Extra Auto_increment permet de préciser que la valeur du champ sera donnée automa-
tiquement (auto-incrémentée)
Action Permet de modier ou supprimer un champ, mettre une clef primaire, un index,
etc.

Les autres tableaux de la page donnent d'autres informations sur la table : par exemple, ses clefs primaires
ou clefs étrangères.
Vous pouvez vous aider d'Internet pour répondre aux questions (ex : sur le site www. manuelphp. com/
mysql/ manuel. php , vous avez le manuel de référence de mysql en français).
Dans la table recette,
(a) Quels sont les champs de type entier ?
(b) Quels sont les champs de type chaîne de caractère ?
(c) Quelle est la clé primaire?
(d) Quel est le jeu de caractère du champ nom ?
2. Cliquez sur l'onglet Afficher. Le tableau qui apparaît correspond aux données contenues dans la table
recette.

Figure 7  Titres des colonnes du tableau achant les données


(a) Quels sont les noms des recettes de cuisine ainsi que leurs temps de préparation (donnés en minutes)
et les valeurs de idType?
3. Cliquez sur la table typeRecette dans le menu de gauche.
(a) Dans l'onglet structure, quels sont les types des 2 champs de cette table
(b) Quelles sont les données contenues dans cette table?
(c) idType est la clef primaire de la table typeRecette. idType est une clef étrangère dans la table
recette; elle permet de faire référence a un type de recette dans la table recette.
A la question précédente, vous avez noté la valeur de idType pour chacune des recettes de la table
recette.
Grâce à la valeur de idType, pour chaque recette, donnez le nom du type de chaque recette.

ème
Licence Informatique 2 année - Y. Sam 4 / 10
5 octobre 2020 EP2  Interrogation des Bases de Données

(d) A votre avis, est-il gênant qu'un type de recette existe alors qu'il n'y a pas de recette de ce type
dans la table recette ? Pourquoi?
(e) A votre avis, serait-il gênant d'ajouter une recette dans la table recette en lui donnant un numéro
d'idType qui n'existe pas encore dans la table typeRecette ?
4. Regardez maintenant la table ingrédient
(a) Quelles sont les valeurs de la clé correspondant au chocolat et à l'oeuf?
5. Regardez la table contient.
Cette table représente la relation Contient(#idRecette, #idIngrédient, quantité) qui découle de
la traduction d'une association n :n du modèle E/A. Le couple (idRecette, idIngredient) est la clef
primaire de contient. idRecette et idIngredient sont des clefs étrangères et permettent de faire référence
a une recette de la table recette et a un ingrédient de la table ingrédient.
(a) Pour la recette 2, donnez les valeurs de idIngredient et leurs quantités.
(b) En regardant les tables ingrédient, recette et contient, reconstituez la recette 2.
Nom d e l a r e c e t t e :
Temps d e p r é p a r a t i o n :
Temps d e c u i s s o n :
Nbre de p a r t s :
I n g r é d i e n t s ( et quantités ) :
Texte :

(c) Pour la recette des crêpes, quels sont les ingrédients et leurs quantités?
(d) Avec cet exemple, expliquez la diérence entre une clef primaire et une clef étrangère.
Exercice 3. Manipuler le contenu de la base de données de recettes
1. L'interface phpMyAdmin propose des formulaires qui permettent de faire certaines opérations de gestion
de la base en générant les requêtes SQL correspondant à ces opérations.
(a) Cliquez sur la table typeRecette puis sur l'onglet Insérer. Entrez les données ci-dessous. Ne
pas mettre de valeur dans idType car cette valeur sera créée automatiquement (grâce à l'option
auto_increment).

ème
Licence Informatique 2 année - Y. Sam 5 / 10
5 octobre 2020 EP2  Interrogation des Bases de Données

Figure 8  Titres des colonnes du tableau achant les données


Cliquez sur exécuter tout en bas de la page. La page qui s'ache alors indique le nombre d'enre-
gistrements insérés l'identiant de cet enregistrement et la requête SQL qui a été automatiquement
générée et qui insère les données dans la table typeRecette.

Figure 9  Requête automatiquement générée


(b) Cliquez sur la table recette puis sur l'onglet Insérer.
Entrez les données qui concernent la recette des oeufs au lait comme ci-dessous.

ème
Licence Informatique 2 année - Y. Sam 6 / 10
5 octobre 2020 EP2  Interrogation des Bases de Données

Figure 10  Recette à insérer


(c) Allez dans l'onglet Afficher. Quelle est la valeur de idRecette pour la recette des oeufs au lait?
(d) Dans la table ingrédient, les oeufs et le lait existent mais pas l'extrait de vanille, ni le sucre. Allez
dans la table ingrédient, onglet insérer : ajouter l'extrait de vanille puis le sucre.
(e) Il faut maintenant indiquer la quantité de chacun des ingrédients dans la table contient.
La recette des oeufs au lait nécessite 1 l de lait, 4 oeufs, 125 g de sucre et de l'extrait de vanille.
Indiquez dans le tableau ci-dessous les valeurs à ajouter dans les diérents champs de la table
contient.

idRecette idIngredient Quantité

(f) Ensuite insérer ces valeurs grâce à l'onglet "Insérer" dans la table contient.
2. Modication/suppression de valeurs dans les tables
Actuellement, la mousse au chocolat a pour type gâteau : il serait plus correct de dire que la mousse au
chocolat est un entremet.
(a) Allez sur la table recette et achez son contenu. Pour les modications, on peut utiliser le menu
outils à gauche des données. Pour modier, les valeurs de la mousse au chocolat, cliquez sur le
crayon qui se trouve sur cette ligne.
ème
Licence Informatique 2 année - Y. Sam 7 / 10
5 octobre 2020 EP2  Interrogation des Bases de Données

Changez la valeur de idType pour que cela corresponde à un entremet.


(b) Allez sur la table typeRecette et supprimez le type de recette "viande".
Exercice 4. Modier la structure de la base de données de recettes
1. On peut ajouter des champs (attributs) dans une table en cliquand sur l'onglet Structure (dans la zone
Ajouter un nouveau champ de phpmyadmin) puis en cliquant sur le bouton exécuter.

Figure 11  Ajouter un nouveau champ


Nous allons ajouter le champ dateInsertion qui indiquera la date d'insertion de la recette : la date sera
de type TIMESTAMP (date et heure) et aura pour valeur par défaut la date et l'heure courante.
2. Insérez une nouvelle recette sans mettre de valeur au champ dateInsertion pour tester le comportement
de mySQL. Que se passe-t'il?

Exercice 5. Questionner la base de données de recettes


Nous allons maintenant écrire des requêtes (questions) auxquelles la base de données va répondre.
1. Premières requêtes SQL
(a) Recopiez la requête suivante dans l'onglet SQL puis exécutez.
SELECT ∗ FROM ingredient

Le résultat est la liste de tous les ingrédients (même résultat qu'en allant sur l'onglet afficher)
(b) Ecrire la requête permettant d'avoir toutes les informations de la table recette.
(c) Ecrire la requête qui extrait le nom et le texte de chaque recette
(d) Ecrire la requête qui liste les ingredients dans l'ordre alphabétique
(e) Ecrire la requête qui trouve le temps de preparation le plus long
(f) Ecrire la requête qui donne les noms des recettes de type 3
(g) Ecrire la requête qui donne les noms des recettes commençant par P
(h) Recopiez la requête suivante et exécutez la! Quel est le résultat?

ème
Licence Informatique 2 année - Y. Sam 8 / 10
5 octobre 2020 EP2  Interrogation des Bases de Données

SELECT R . nom , q u a n t i t e , ING . nom


FROM r e c e t t e R , c o n t i e n t C , i n g r e d i e n t ING
WHERE R . i d R e c e t t e=C . i d R e c e t t e AND C . i d I n g r e d i e n t =ING . i d I n g r e d i e n t
(i) Recopiez maintenant la requête suivante et exécutez la! Quel est le résultat?
SELECT R . nom AS R e c e t t e , CONCAT( q u a n t i t e , ' ' , ING . nom ) AS I n g r é d i e n t s
FROM r e c e t t e R , c o n t i e n t C , i n g r e d i e n t ING
WHERE R . i d R e c e t t e=C . i d R e c e t t e AND C . i d I n g r e d i e n t =ING . i d I n g r e d i e n t

2. Cliquez sur le nom de la base dans le menu de gauche, puis sur Exporter. Vous pouvez choisir l'exportation
rapide!
Dans l'exportation personnalisée, on peut choisir le nom des tables à exporter et de nombreuses autres
choses !
Cliquez sur "
Exécuter " puis "
Enregistrer " (le chier sera enregistré dans le dossier de téléchargement
par défaut) ou " ouvrir avec ... ". Ensuite copiez votre chier dans
U:\TP_BD\ et le nom de chier
mesrecettes.sql .
3. Nous allons maintenant vider la base de données pour recharger une autre base de données : pour faire
cela, il faut supprimer toutes les tables présentes une à une en utilisant l'onglet "Supprimer"!
Attention : l'ordre dans lequel on supprime les tables à une importance ! Il faut supprimer en premier les
tables qui contiennent des clés étrangères.
Ensuite pour charger une nouvelle base : cliquez sur l'onglet " Importer ", allez dans " emplacement
du fichier texte " et cliquez sur " parcourir " pour indiquer le chemin du chier recettes2.sql
(U:\TP_BD\recettes2.sql )
4. Que font les requêtes suivantes dans cette nouvelle version de la BD recettes?
(a) Requête
SELECT count ( ∗ ) FROM recette

(b) Requête
SELECT nom FROM ingredient
ORDER BY nom

(c) Requête
SELECT nom FROM i n g r e d i e n t I , c o n t i e n t C
WHERE I . i d I n g r e d i e n t =C . i d I n g r e d i e n t and C . i d R e c e t t e =3

(d) Requête
SELECT nom FROM i n g r e d i e n t I
INNER JOIN c o n t i e n t C ON I . i d I n g r e d i e n t =C . i d I n g r e d i e n t
WHERE C . i d R e c e t t e =3

(e) Requête
SELECT R . nom , count ( i d I n g r e d i e n t )
FROM c o n t i e n t C , r e c e t t e R
WHERE R . i d R e c e t t e=C . i d R e c e t t e
GROUP BY R . i d R e c e t t e

ème
Licence Informatique 2 année - Y. Sam 9 / 10
5 octobre 2020 EP2  Interrogation des Bases de Données

(f) Requête
SELECT R . nom , T . nom FROM R e c e t t e R
INNER JOIN t y p e r e c e t t e T ON T . i d T y p e=R . i d T y p e

(g) Comparez le résultat de la requête ci-dessous avec la requête précédente. Que remarquez-vous?
Pourquoi?
SELECT R . nom , T . nom FROM R e c e t t e R
LEFT OUTER JOIN t y p e r e c e t t e T ON T . i d T y p e=R . i d T y p e

(h) Comparez le résultat de la requête ci-dessous avec les 2 requêtes précédentes. Que remarquez-vous?
Pourquoi?
SELECT R . nom , T . nom FROM R e c e t t e R
RIGHT OUTER JOIN t y p e r e c e t t e T ON T . i d T y p e=R . i d T y p e

5. A nouveau, supprimez tout le contenu de votre base de données! Nous travaillerons sur une autre base de
données au prochain TP.

ème
Licence Informatique 2 année - Y. Sam 10 / 10

Vous aimerez peut-être aussi