Vous êtes sur la page 1sur 21

Méthodes et outils de traitement des données 2022-2023

Bases de donnees MySQL et requetes


SQL
Contexte
L’objectif de ces TP est de découvrir le langage de requête SQL permettant d’interroger de
manière précise, rapide et riche les Systèmes de Gestion de Base de Données qui l’implémente
ainsi qu’un de ces systèmes : MySQL.

Ces travaux nécessiteront d’aller regarder dans la documentation ou sur internet et un travail
actif de votre part.

Ressources du module
Vous avez à votre disposition :
- Le polycopié de cours Base de données disponible sur http://moodle.epf.fr qui
reprend toute la partie analyse du besoin / modèle conceptuel de données (MCD) /
modèle logique de données (MLD) / modèle physique de données (MPD).
- le cours de SQL du site http://sql.sh, écrit par T. Archambeau disponible ici :
http://sql.sh/ressources/cours-sql-sh-.pdf. Ce polycopié très complet reprend de
manière très claire la syntaxe de la grande majorité des requêtes SQL. Vous vous
appuierez sur ce document pour effectuer les exercices de ce TP.
- Le fichier « Northwind_sansregion.sql » contenant les instructions SQL pour créer la
base de données, et le fichier « Update_territories_final.csv » contenant les données
de la table « Territories » sont disponibles sur http://moodle.epf.fr.

Environnement de travail XAMPP


La suite logicielle XAMPP est un regroupement autonome de programmes classiquement
utilisés conjointement pour réaliser des sites web dynamique avec bases de données :
✓ X pour Cross-plateform (fonctionne aussi bien sous Windows, Mac Os X et GNU/Linux)
✓ Apache, un logiciel permettant de mettre en oeuvre un serveur web.
✓ MySQL (ou son successeur MariaDB), un Système de Gestion de Bases de Données
SGBD
✓ PHP, un langage de programmation orienté page web dynamique et son interpréteur
✓ Perl, un langage de script souvent utilisé écrire des programmes CGI (programmes
exécutés sur le serveur web).
C’est donc un excellent outil pour prototyper un site web ou apprendre à travailler sur des
bases de données.

1
Méthodes et outils de traitement des données 2022-2023

XAMPP en production : Attention, XAMPP n’a pas vocation à être utilisé dans un contexte de
production finalisée. Il est alors recommandé de réaliser l’installation de tous ces logiciels sur
un "vrai serveur" (Notez bien que la configuration peut cependant être transférée de l’un à
l’autre.).

Sujet du TP

Nous allons étudier une base de données existante appelée Northwind Trader, dont le MLD
est ci-dessous.
(https://www3.ntu.edu.sg/home/ehchua/programming/sql/SampleDatabases.html#zz-3.)

2
Méthodes et outils de traitement des données 2022-2023

1) Ouvrez l’application XAMPP et démarrez Apache et MySQL:

Apache correspond au serveur Web, permettant d’émuler une page web pour que vous
puissiez travailler sur votre base de données.
MySQL est le Système de Gestion de Base de Données relationnelles, permettant de stocker,
manipuler ou gérer, et partager des données dans une base de données.

3
Méthodes et outils de traitement des données 2022-2023

Une fois MySQL lancé, cliquez sur Admin, pour vous connecter en local sur MySQL en tant
qu’administrateur de Base de Données.
Votre navigateur web devrait s’ouvrir vers la page http://localhost/phpmyadmin/ (localhost
est l’adresse réflexive vers votre propre ordinateur). PHPMyAdmin est un outil développé en
PHP et qui permet d’administrer et de manipuler facilement des bases de données MySQL ou
MariaDB. C’est l’outil que nous allons utiliser pour réaliser nos exercices.

N’oubliez pas de stopper les serveurs Apache et MySQL à la fin du TP.

2) Cliquez sur l’onglet SQL. Depuis l’onglet SQL vous pouvez exécuter des requêtes au
format SQL et visualiser le résultat. Entrez la requête « Show databases » pour voir les
différentes bases de données déjà existantes.

Requête : Une requête est un message écrit envoyé à quelqu’un et qui attend une
réponse ou une action. En informatique, c’est un système très utilisé lors de l’envoi de
message entre un client et un serveur (par ex : requête HTTP entre un navigateur et un
serveur web).
En base de données, ce sont les messages que l’on envoie au SGBD afin de demander
des données ou d’agir sur le système. Le format le plus courant de requête en BDD
relationnelle est le langage SQL (Structured Query Language).

3) Importez le fichier « Northwind_sansregion.sql » : dans l’onglet « Importer »,

choisissez le fichier à importer. Cliquez ensuite sur en bas de la page.


Vous devriez voir la nouvelle base de données sur le côté gauche.

4
Méthodes et outils de traitement des données 2022-2023

Assurez-vous de toujours spécifier la base de données que vous utilisez. Soit avec l’utilisation
de la commande « USE northwind », soit en cliquant sur la base de données « northwind »
dans la partie gauche de la fenêtre.
Vous voyez l’endroit où vous êtes dans les différentes bases de données à côté de l’adresse
serveur :

Assurez-vous d’être sur « Northwind » pour la suite du TP.


Pour chaque instruction jusqu’au point 9 inclus, vous pouvez soit utiliser le code SQL, soit
utiliser l’interface PHPMyadmin. C’est cette dernière possibilité qui vous est montrée dans ce
TP.

5
Méthodes et outils de traitement des données 2022-2023

4) Instruction CREATE TABLE


Créez une table « Region » correspondant au MLD donné au début de ce TP. Il est possible
de conditionner l'exécution d'une commande CREATE ou DROP à l'existence ou non d'un
élément du même nom. Nous utilisons le mot clé IF EXISTS ou IF NOT EXISTS.

Cliquez sur « Nouvelle table » puis renseignez les différents champs :

6
Méthodes et outils de traitement des données 2022-2023

Au moment où vous déclarez la clé primaire dans la partie « Index », un pop-up s’ouvre. Il
suffit de cliquer sur « Exécuter » :

Cliquez sur en bas de la page pour voir la requête SQL correspondante puis sur

. La table est créée, et apparaît dans le bandeau gauche de votre base de


données.

L’opération inverse de CREATE TABLE est DROP TABLE qui permet de supprimer une table
existante.
Évidemment, DROP TABLE est à utiliser avec précaution.

7
Méthodes et outils de traitement des données 2022-2023

5) Instruction ALTER TABLE


Ajoutez un champ « Region_ID » à la table « Territories ».
Tout d'abord, sélectionnez la table « Territories » dans l'onglet de gauche :

Vous arrivez alors dans l’onglet « Parcourir » qui contient les données de la table :

Allez dans l’onglet « Structure » pour accéder à la structure de la table at ajoutez une colonne:

8
Méthodes et outils de traitement des données 2022-2023

Lors de la création du nouveau champ, ajoutez-y un index :

Index : En SQL, les index sont des ressources qui permettent d’accéder plus rapidement
aux données. Cependant, un index occupe de l’espace supplémentaire dans la base de
données et l’insertion de données est plus longue car les index sont mis à jour à chaque
fois que des données sont insérées. Il faut ainsi choisir avec précaution les champs à
indexer.
Sous MySQL, seul un champ possédant un index peut être défini comme une clé
étrangère.

Comme pour la clé primaire, lorsque vous définissez l’index, un pop-up s’ouvre. Renseignez
le nom de l’index et exécutez.

On vient de voir que ALTER TABLE ... ADD permet d’ajouter une colonne à une table existante.
La commande ALTER TABLE ... DROP permet de son côté de les supprimer. À utiliser avec
précaution !

9
Méthodes et outils de traitement des données 2022-2023

6) Instruction INSERT INTO


Ajoutez les 4 données suivantes à la table « Region » :

RegionID 1 2 3 4
RegionDescription Eastern Western Northern Southern

Tout d'abord, sélectionnez la table « Region » et allez dans l’onglet « Insérer » :

En bas de la page, choisissez le nombre de lignes que vous voulez renseigner :

Insérez les données demandées. Si vous cliquez sur tout en bas de la page, vous

enregistrez les 4 lignes en même temps. Si vous cliquez sur sous une donnée,
cela n’enregistre que cette donnée.

10
Méthodes et outils de traitement des données 2022-2023

7) Instruction UPDATE
Complétez les données de la table « Territories » avec les 2 lignes ci-dessous.

TerritoryID TerritoryDescription RegionID


01581 Westboro 1
01730 Bedford 1

Tout d'abord, sélectionnez la table « Territories » dans l'onglet de gauche. Vous arrivez sur
l’onglet « Parcourir » où vous voyez les données de la table et toutes les valeurs de la colonne
« Region_ID » sont à 0, puisque nous n’avons rentré pour l’instant aucune donnée dans cette
colonne. Cliquez sur « Editer » pour chaque ligne que vous souhaitez modifier, et modifiez la
valeur dans la fenêtre.

11
Méthodes et outils de traitement des données 2022-2023

8) Ensuite, utilisez le fichier csv « Update_territories_final.csv » pour mettre à jour


toutes les données de la table « Territories ». Le fichier csv possède comme
séparateur de champ le « ; ». Dans l'onglet Importer, cliquez sur « Parcourir » et
sélectionnez le fichier.

12
Méthodes et outils de traitement des données 2022-2023

9) Instruction ALTER TABLE / ADD CONSTRAINT


Ajoutez une clé étrangère sur la table « Territories » reliant les deux tables « Region » et
« Territories ». Tout d'abord, sélectionnez la table « Territories » dans l'onglet de gauche.
Allez dans « Structure » puis dans « Vue relationnelle » :

13
Méthodes et outils de traitement des données 2022-2023

Plusieurs options sont disponibles lors de la suppression ou mise à jour de données. Le choix
dépend des règles de gestion données par le client.

- RESTRICT : empêche la suppression ou la mise à jour d’enregistrement de la table de


référence si la donnée est utilisée dans la table possédant la clé étrangère.
- SET NULL : champs mis à NULL dans la table possédant la clé étrangère lorsqu’un
enregistrement est supprimé ou modifié dans la table de référence
- CASCADE : suppression ou mise à jour automatiques des enregistrements dans la table
possédant la clé étrangère lorsqu’un enregistrement est supprimé ou modifié dans la
table de référence
- NO ACTION

10) Il existe différents opérateurs, commandes ou fonctions en SQL, dont voici quelques
exemples courants :
✓ Commande ORDER BY ✓ Opérateur AND ✓ Fonction SUM
✓ Commande HAVING ✓ Opérateur OR ✓ Fonction COUNT
✓ Commande LIMIT ✓ Opérateur BETWEEN ✓ Fonction MAX
✓ Commande GROUP BY ✓ Opérateur IN ✓ Fonction MIN
✓ Commande INNER JOIN ✓ Opérateur LIKE ✓ Fonction AVG

A partir de l'onglet SQL, affichez les requêtes ci-dessous (1 requête par point) :

a. Instruction SELECT
• Toutes les colonnes de la table « employees »
• Les noms des employés triés par date de naissance

b. Instruction SELECT WHERE


• L’identifiant client, le nom de l'entreprise et le nom du contact correspondant pour les
clients marseillais

14
Méthodes et outils de traitement des données 2022-2023

c. Opérateurs logiques
• Les produits (nom et prix) dont le prix est supérieur à 20 € et dont la quantité en stock
correspond à plus du double de la quantité commandée
• Les produits (nom et prix) avec une quantité en stock supérieure à 15 ou une quantité
en stock inférieure à 5, triés selon la quantité en stock décroissante
• Même requête que précédemment mais uniquement pour les produits du fournisseur
dont l’identifiant fournisseur est 1
• Les fournisseurs venant des pays suivants : Japon, États-Unis et Royaume-Uni
• Les employés dont les noms de famille commencent par D et finissent par O

d. Fonctions / groupements
• Les salaires cumulés des employés vivant aux Etats-Unis
• Les salaires cumulés des employés par ville pour les employés vivant aux Etats-Unis
• Le nombre de fournisseurs par ville pour les fournisseurs venant des Etats-Unis
• Le nombre de fournisseurs par ville pour les fournisseurs venant des Etats-Unis.
N'inclure que les villes comptant plus de 5 fournisseurs

e. Jointure entre tables


• Les employés dont les noms de famille commencent par D avec les identifiants de
commandes qu’ils ont gérées
• Les commandes passées entre le 06/05/1998 et le 06/06/1998 avec le nom de
l’employé et le nom du client correspondants

11) Il est possible de créer des vues.

Vues : Tables virtuelles issues de l'assemblage d'autres tables en fonction de critères.


Techniquement les vues sont créées à l'aide d'une requête SELECT. Elles ne stockent
pas les données qu'elles contiennent mais conservent juste la requête permettant de
les créer.
Les vues peuvent être utilisées pour différentes raisons. Elles permettent de :

• Contrôler l'intégrité en restreignant l'accès aux données pour améliorer la


confidentialité.
• Masquer la complexité du schéma.
• Modifier automatiquement des données sélectionnées (sum(), avg(), max(),...).
• Conserver la structure d'une table si elle doit être modifiée.

15
Méthodes et outils de traitement des données 2022-2023

Pour créer des vues, il faut :


• Soit aller sur une table et cliquer sur « Créer une vue »

• Soit aller dans la liste de vues et cliquer sur « Nouvelle vue ».

16
Méthodes et outils de traitement des données 2022-2023

Un pop-up s’ouvre, dans laquelle il faut renseigner le nom de la vue, et le code nécessaire dans
la fenêtre « AS » :

Si le pop-up ne s’ouvre pas, cela peut venir de votre pare-feu ou d’un bloqueur de publicités.
Il faut alors autoriser les pop-ups pour cette page web.

Créez les vues suivantes :

a. Jointure entre tables


• Une vue permettant d’afficher les caractéristiques des commandes et des clients
associés (2 caractéristiques par table à afficher)

b. Colonne calculée et alias


• Une vue affichant le prix total des commandes par commande. Vous nommerez la
colonne correspondant au montant total des commandes « Total ».

17
Méthodes et outils de traitement des données 2022-2023

12) Les requêtes peuvent être stockées dans des procédures.

Procédure stockée : série d'instructions SQL désignée par un nom. Lorsque l'on crée
une procédure stockée, on l'enregistre dans la base de données que l'on utilise, au
même titre qu'une table, par exemple. Une fois la procédure créée, il est possible
d'appeler celle-ci par son nom. Les instructions de la procédure sont alors exécutées.

Contrairement aux requêtes préparées, qui ne sont gardées en mémoire que pour la
session courante, les procédures stockées sont, comme leur nom l'indique, stockées de
manière durable, et font bien partie intégrante de la base de données dans laquelle
elles sont enregistrées.

Pour créer des procédures, il faut :

• Soit aller sur la BDD « Northwind » et cliquer sur l’onglet « Procédures stockées »

• Soit aller dans la liste des procédures et cliquer sur « Nouvelle procédure ».

Un pop-up s’ouvre, dans laquelle il faut renseigner le nom de la procédure, les paramètres
d’entrée (IN) et le code nécessaire dans la fenêtre « Définition » :

18
Méthodes et outils de traitement des données 2022-2023

Créez les procédures suivantes :

a. Instruction INSERT
• Insérer des données dans la table « customers »

b. Instruction SELECT WHERE / Jointure


• Afficher les données d’un client particulier
• Afficher les ventes (montant total de toutes les commandes) par année

13) Il est possible d’utiliser des déclencheurs.

Déclencheurs (ou triggers) : objets attachés à une table qui permettent de déclencher
l'exécution d'une instruction, ou d'un bloc d'instructions, lorsqu'une ou plusieurs
lignes sont insérées, supprimées ou modifiées dans la table à laquelle ils sont
attachés.
Dans le corps du trigger, MySQL met à disposition deux mots-clés : OLD et NEW.

• OLD représente les valeurs des colonnes de la ligne traitée avant qu'elle ne soit
modifiée par l'événement déclencheur. Ces valeurs peuvent être lues, mais pas
modifiées.
• NEW représente les valeurs des colonnes de la ligne traitée après qu'elle a été
modifiée par l'événement déclencheur. Ces valeurs peuvent être lues et
modifiées.

19
Méthodes et outils de traitement des données 2022-2023

Créez un déclencheur permettant de mettre à jour automatiquement le champ « UnitPrice »


de la table « Order details » lorsque le champ « UnitPrice » de la table « Products » est
modifié.

Allez sur la table « Products » et sélectionnez l’onglet « Déclencheur ».

Définissez le moment et le type d’événement. Ecrire la requête faisant l’action demandée ci-
dessus, puis exécuter.

20
Méthodes et outils de traitement des données 2022-2023

Vérifiez le bon fonctionnement de votre déclencheur en modifiant le prix unitaire d’un


produit dans la table « Products ».

21

Vous aimerez peut-être aussi