Vous êtes sur la page 1sur 16

Module : I144 Parcours : MIP

Bases de données : Langage SQL

Polycopiè de Travaux pratiques

Mohammed Khalil

Année Universitaire : 2018 - 2019


Table des matières

1 Travaux pratiques 4

1.1 TP1 : PHPMyadmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.1 WampServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.2 PHPMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2 TP2 : LDD et LMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2.1 Création des tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2.2 Ajout, retrait et modication d'une colonne . . . . . . . . . . . . . . . . . . . . 8

1.2.3 Insertion des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2.4 Manipulation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3 TP3 :Requêtes simples et sous requêtes . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.3.1 Requêtes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.3.2 Requêtes logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.3.3 Sous requêtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3.4 Quanticateurs ensemblistes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.4 TP4 : Jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2
1.4.1 Fonctions agrégatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.4.2 Jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.4.3 Jointures, sous requêtes et fonctions agrégatives . . . . . . . . . . . . . . . . . . 12

1.5 TP5 : Regrouppements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.5.1 Regroupements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.5.2 Regroupements et jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.5.3 Regroupements, jointures et sous-requêtes . . . . . . . . . . . . . . . . . . . . . 13

1.5.4 Conditions sur les regroupements . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.6 TP6 : Exercice complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3
Chapitre 1

Travaux pratiques

4
1.1 TP1 : PHPMyadmin

1.1.1 WampServer

Le package WAMP est un environnement de développement sous Windows, très utile pour déve-
lopper un site web dynamique. Les éléments qui composent WAMP sont les suivants :
 Apache : serveur HTTP très populaire.
 MySQL : système de gestion de base de données.
 PHP : langage de développement populaire sur les sites web. Ce langage permet d'interpréter le
code des pages PHP pour ensuite envoyer les données à Apache qui les envois ensuite au client
(c'est-à-dire le plus souvent : un navigateur web).
 PHPMyAdmin : système de gestion pour MySQL développé en PHP . C'est une interface
pour gérer plus facilement MySQL sans nécessairement avoir de nombreuses connaissances. Cela
permet de mieux voir et éditer les informations liées à la base de données, plutôt que d'utiliser
des lignes de commandes pour faire la même chose.

1.1.2 PHPMyAdmin

A l'aide de PHPMyAdmin établir les opérations suivantes :


1. Créer votre première base de données Université.

2. Créez la table Etudiant contenant les colonnes suivantes :


 CNE de type entier.
 Nom de type chaîne de caractère de taille 25.
 Prenom de type chaine de caractère de taille 25.
 Age de type entier.
 DateInscription qui prend la date et l'heure comme valeurs.
 Adresse de type texte.
 Sexe de type caractère.
 Moyenne de type réel.
3. Dénir la clé primaire de table Etudiant.

4. Modier le type de la colonne Moyenne à ce qu'il n'accepte qu'une valeur positive inférieure
strictement à 100 avec 2 chires après la virgule.
5. Remplir la table par les informations de 5 étudiants de votre choix.

5
6. Acher tous les étudiants dont le prénom est Driss.
7. Acher tous les garçons de l'université.
8. Acher tous les étudiants qui ont un age compris entre 15 et 18 ans.
9. Acher tous les étudiants qui sont inscrits en 2015.
10. Acher tous étudiants qui n'ont pas eu une mention Bien.
11. Créer une deuxième table Ouvrage contenant les colonnes suivantes :
 RefOuvrage de type entier
 NomOuvrage de type chaîne de caractère de taille 20.
 CNE de type entier
12. Dénir la clé primaire de la table Ouvrage tout en exigeant qu'elle s'incrémente automatique-
ment.
13. Dénir la clé étrangère de cette table.
14. Insérer 5 enregistrements de votre choix
15. Acher les ouvrages dont le nom contient "base de données".
16. Acher les ouvrages qui sont empruntés par Houda.

6
1.2 TP2 : LDD et LMD

Soit la base de données dénie par le modèle relationnel suivant :

 CLIENT (numcli, nomcli, ville, categorie, compte)


 COMMANDE (numcom, numcli, datecom)
 PRODUIT (numpro, nompro, prix, qstock)
 DETAIL (numcom, numpro, qcom)

On donnera une brève dénition de la signication des tables et des colonnes :

• Table CLIENT : chaque ligne décrit un client ; les colonnes décrivent successivement le numéro
du client (numcli), son nom (nomcli), sa ville (ville), sa catégorie (categorie) et l'état de son
compte (compte). L'identiant primaire est constitué de numcli.
• Table PRODUIT : chaque ligne décrit un produit ; les colonnes décrivent successivement le
numéro du produit (numpro), son nom (nompro), son prix unitaire (prix) et la quantité restant
en stock (qstock). numpro est l'identiant primaire.
• Table COMMANDE : chaque ligne décrit une commande passée par un client ; les colonnes
décrivent successivement le numéro de la commande (numcom), le numéro du client qui a passé
la commande (numcli) et la date de la commande (datecom). numcom est l'identiant primaire
de la table. numcli est une clé étrangère vers la table CLIENT
• Table DETAIL : chaque ligne représente un détail d'une commande ; les colonnes décrivent
successivement le numéro de la commande à laquelle le détail appartient (numcom), le numéro
du produit commandé (numpro) et la quantité commandée (qcom). L'identiant primaire est
constitué de numcom et numpro. numcom et numpro sont en outre chacune une clé étrangère
respectivement vers les tables COMMANDE et PRODUIT.

7
1.2.1 Création des tables
1. Créer une base de données appelée BD_ACHAT.

2. Créer les tables de la base de données dont les noms et les types des colonnes sont illustrées
ci-dessus.
3. Ajouter les clés primaires et les clés étrangères lors de la création des tables ainsi que les
contraintes suivantes :
 Les clés primaires des tables CLIENT, PRODUIT et COMMANDE sont de type int et doivent
s'incrémenter automatiquement.
 Le nom et la ville des clients sont non nuls.
 La colonne prix est supérieure ou égale à 0.
 Le domaine de valeurs des colonnes qstock et qcom s'étend de 0 à 1000.

1.2.2 Ajout, retrait et modication d'une colonne


1. Ajouter la colonne poids à la table PRODUIT.
2. Supprimer la colonne ville de la table CLIENT.
3. Modier le type de la colonne nompro de la table PRODUIT en varchar(25).
4. Dénir la valeur par défaut de la colonne qstock par 0.
5. Renommer la colonne categorie en cat dans la table CLIENT.
6. Renommer la table CLIENT en CUSTOMER.

1.2.3 Insertion des données

Insérer les données présentées sur la gure 1.

1.2.4 Manipulation des données

Selon le tableau , quelles sont les enregistrements qu'on ne peut pas insérés dans les tables précé-
demment crées. Remplissez les tables par les enregistrements permis.
1. Modier le nom et le prix du produit 6 par Clé USB et 100 DHs.
2. Augmentez de 1000 Dhs les comptes des clients de catégorie A.

8
3. Supprimer les clients dont le nom est Houda.
4. Diminuer de 10% les comptes supérieurs à 5000 DHs.

(a) Table CLIENT. (b) Table COMMANDE.

(c) Table PRODUIT. (d) Table DETAIL.

Figure 1.1: Insertion des enregistrements.

9
1.3 TP3 :Requêtes simples et sous requêtes

1.3.1 Requêtes simples


1. Acher les caractéristiques des produits.
2. Acher le numéro, le nom et la ville des clients de catégorie B n'habitant pas à Rabat.
3. Acher les caractéristiques des produits Informatiques.
4. Acher les caractéristiques de tous les casques.
5. Donner le numéro, le nom et le compte des clients de Tanger et de Kenitra dont le compte est
positif.
6. Quelles catégories de clients trouve-t-on à Casablanca ?
7. Acher le numéro, le nom et la ville des clients dont le nom précède alphabétiquement la ville
où ils résident.
8. Acher les noms des clients qui ont un compte supérieur à 10000 DHs tout en les triant par
ordre lexicographique.
9. Acher les produits dont le nom commence par C et contient micro.

1.3.2 Requêtes logiques

Écrire les requêtes SQL qui recherchent les clients :


1. habitant à Rabat ou à Casablanca.
2. qui n'habitent ni à Rabat ni à Casablanca.
3. de catégorie D habitant à Marrakech.
4. de catégorie C ou habitant à Casablanca.
5. de catégorie C n'habitant pas à Casablanca.
6. qui n'ont pas été sélectionnés dans la question précédente.
7. qui soit sont de catégorie B ou C, soit habitent à Rabat ou à Kenitra (ou les deux conditions).
8. qui soit sont de catégorie B ou C, soit habitent à Rabat ou à Kenitra (mais pas les deux condi-
tions).

10
9. qui sont de catégorie B ou C, et qui habitent à Tanger ou à Casablanca.
10. qui n'ont pas été sélectionnés dans la question précédente.
11. qui n'ont pas de catégorie ou dont le compte est négatif (mais pas les deux).
12. Acher le numéro et la date des commandes qui sont réalisées entre les dates : 05/06/2015 et
15/09/2015

1.3.3 Sous requêtes


1. Acher les numéros des clients qui commandent le produit de numéro 4.
2. Acher les villes des clients qui commandent le produit de numéro 6.
3. Quels sont les Casques qui font l'objet d'une commande ?
4. Dans quelles villes a-t-on commandé en Novembre 2015 ?
5. Acher les commandes qui spécient une quantité du produit 1 inférieure à celle que spécie la
commande 4 pour ce même produit.
6. Acher les commandes qui ne spécient pas le produit 3 ; celles pour lesquelles il n'existe aucun
détail spéciant le produit 3. (Q.S)
7. Acher les commandes qui spécient des produits diérents du produit 3. (Q.S)

1.3.4 Quanticateurs ensemblistes


1. Acher le numéro et le nom du produit dont le prix est inférieur à n'importe quel prix des
produits de la commande numéro 2.
2. Acher le numéro et le nom du produit dont le prix est inférieur à tous les prix des produits de
la commande numéro 3.

11
1.4 TP4 : Jointures

1.4.1 Fonctions agrégatives


1. Acher la valeur totale des stocks (compte non tenu des commandes actuelles).
2. Dans combien de villes trouve-t-on des clients de catégorie D ?
3. Acher le total, le minimum, la moyenne et le maximum des comptes des clients.

1.4.2 Jointures

En utilisant les trois écritures de jointures (condition de jointure, join on, natural join) :
1. Acher les numéros des clients qui commandent le produit de numéro 4.
2. Acher les villes des clients qui commandent le produit de numéro 6.
3. Quels sont les Casques qui font l'objet d'une commande ?
4. Dans quelles villes a-t-on commandé en Novembre 2015 ?
5. Acher le nom et villes des clients triés par ordre alphabétique, qui ont achetés des Casques.

1.4.3 Jointures, sous requêtes et fonctions agrégatives


1. Donner le numéro et le nom des clients de Rabat qui n'ont pas passé de commandes.
2. Acher le numéro et le nom des clients qui n'ont pas commandé des casques.
3. Rechercher les villes dans lesquelles on n'a pas commandé le produit 3.
4. Calculer le montant commandé des produits informatiques.
5. Calculer le montant de chaque détail de commande du client 2.
6. Combien y a-t-il de commandes spéciant un (ou plusieurs) produit(s) informatiques ?
7. Quels sont les produits (numéro et nom) qui n'ont pas été commandés en 2015 ?

12
1.5 TP5 : Regrouppements

1.5.1 Regroupements
1. Calculer, pour chaque ville, le nombre de catégories distinctes.
2. Acher le total et la moyenne des comptes des clients, ainsi que le nombre de clients, selon
chacune des classications suivantes :
 par catégorie,
 par catégorie dans chaque ville.

1.5.2 Regroupements et jointures


1. Calculer, par jour, le total des montants des commandes.
2. Acher pour chaque ville, les noms des produits qui y sont commandés tout en triant les villes
et les noms des produits par ordre lexicographique.
3. Acher, pour chaque ville et pour chaque catégorie, (1) le nombre de commandes passées par
les clients de cette ville et de cette catégorie, (2) le montant total de ces commandes.
4. Acher, pour chaque catégorie de client, le nombre de produits qui ont été commandés le 27-10-
2015.

1.5.3 Regroupements, jointures et sous-requêtes


1. Donner pour chaque ville dans laquelle se trouve au moins un client de catégorie 'B' la liste des
produits informatiques qu'on y a commandés.

1.5.4 Conditions sur les regroupements


1. Donner pour chaque produit la liste des villes dans lesquelles ce produit est commandé en plus
de 500 unités.
2. Acher, pour chaque localité, les produits qu'on y commande et qui sont aussi commandés dans
au moins une autre localité.

13
1.6 TP6 : Exercice complet

Soit le modèle relationnel suivant :

 Employe (Matr, NomE, Poste, Sup, DatEmb, Salaire, Commission, NumDept)


 Departement (Numdept, NomDept, Lieu)

1. Créer une base de données appelée BD_ENTREPRISE.


2. Créer les tables de la base de données nouvellement créée.
3. Ajouter les clés primaires et les clés étrangères lors de la création des tables.
4. Remplir les tables par les données présentées dans les gures 1 et 2.
5. Écrire les requêtes SQL qui achent les informations suivantes

(a) Noms des employés dont le salaire est inférieur à la commission.


(b) Noms des employés qui ne touchent pas de commission.
(c) Noms des employés dont la 2ème lettre est un E.
(d) Noms des employés qui touchent entre 12000 et 18000.
(e) Noms des employés et lieu où ils travaillent.
(f) Lieu des départements dans lesquels des employés touchent une commission.
(g) Nom des employés qui sont le supérieur d'un autre employé.
(h) Noms et lieux des départements dans lesquels il y a au moins un ingénieur (jointures et
sous-interrogations)
(i) Noms et lieux des départements dans lesquels il n'y a pas d'ingénieur.
(j) Noms des employés qui gagnent plus que tous les commerciaux.
(k) Noms des employés qui gagnent plus que tous les commerciaux de leur département.
(l) Nombre d'employés de chaque département.
(m) Total des salaires des employés qui ont le même supérieur direct que zakaria.
(n) Nom de l'employé qui a le plus gros salaire.

14
Figure 1.2: Table employé.

Figure 1.3: Table Département.

15

Vous aimerez peut-être aussi