Vous êtes sur la page 1sur 14

DEPARTEMENT D’INFORMATIQUE

FACULTE DES SCIENCES ET TECHNIQUES FILIERE : MIPS4


UNIVERSITE SIDI MED BEN ABDELLAH SECTION : A-B-C

Série TD N°1 Correction

Objectif de la série Langage SQL : LDD (CREATE, ALTER, DROP) et LMD (INSERT,
UPDATE, DELETE).
Soient les tables suivantes :
Table : client
numcli nom adresse ville
1 Alami 9 Rue G-D La fontaine Meknès
2 Ibrahimi 101 Boulevard Royal Tanger
3 Ibrahimi 33 Rue de Zinzibar Tanger
4 Marzouq 6 Rue de Paris Fès
5 Zorro 32 Rue Alhouria Rabat
6 Aach 1 Rue du 18 novembre Marrakech

Table : commande
numcom date numcli
1 2.1.2016 2
2 2.1.2016 3
3 5.2.2016 2
4 3.3.2016 4

1. Création de la base de données et ses tables


1.1 Créer une nouvelle base de données nommée gestion_commandes.

1.2 Dans la base de données gestion_commandes, créer les tables Client, Produit, Commande et
DetailCom en choisissant les types de données appropriés pour les colonnes et le moteur approprié de
stockage des tables.

~ 1/11~
1.3 Donner la commande SQL qui affiche tous les noms des tables ainsi créées dans la base de données
gestion_commandes.

2. Modification de la structure d’une table


2.1 Formulez la requête SQL pour augmenter la taille de la colonne ville, de la table Client, à 45 caractères.

2.2 Formulez la requête SQL pour ajouter la colonne « telephone » à la table Client.

~ 2/11~
2.3 Formulez la requête SQL pour supprimer la colonne telephone de la table Client.

2.4 Formulez la requête SQL pour afficher la structure de la table Client.

~ 3/11~
3. Définition des contraintes d’intégrité au moment de la création de la table
Créer une nouvelle version de la table Client, nommée Client2, mais cette fois-ci avec les contraintes
d’intégrité suivantes :
✓ numcli : est une clé primaire.
✓ Nom : est un champ non vide toujours renseigné.
✓ Adresse : est un champ unique et toujours renseigné.
N’oublier pas d’attribuer des noms à ces contraintes : vous suivez la configuration suivante pour
nommer les contraintes : nomtable_nomclonne_typedelacontarainte
Comme exemple pour nommer la contrainte clé primaire sur la colonne numcli on utilise le nom :
« client_numcli_pk ».

La contrainte NOT NULL ne peut pas être nommée sous MySQL.

4. Suppression des contraintes


Donner les commandes SQL permettant de supprimer toutes les contraintes définies
dans la table Client2.

~ 4/11~
La commande standard SQL ne marche pas avec MySQL

5. Suppression des tables


A l’aide du SQL, supprimer la table Client2.

6. Définition des contraintes d’intégrité après création des tables


6.1 Formulez les requêtes SQL pour ajouter, avec des noms de contraintes, les contraintes suivantes :
✓ numcli de la table client : est une clé primaire.

✓ nom du client de la table client : est un champ non vide toujours renseigné.

~ 5/11~
✓ numcom de la table commande : est une clé primaire.

✓ numcli de la table commande : est une clé étrangère.

~ 6/11~
✓ numcli de la table client : est une clé primaire.

Répétition

✓ npro de la table produit : est une clé primaire.

✓ (npro, numcom) de la table detailCom : est une clé primaire.

~ 7/11~
✓ npro de la table detailCom : est une clé étrangère.
✓ numcom de la table detailCom : est une clé étrangère.
6.2 Formuler la requête SQL qui affiche les contraintes définies dans la table Client par exemple.

7. Définition des indexes


7.1 Quel est le rôle des indexes dans une base de données ?

Un index est une structure de données qui représente la liste ordonnée des valeurs auxquelles il se
rapporte. Cette structure stocke les valeurs triées et permet d’y accéder de manière efficace et
rapide.
Son rôle:
- accélérer les requêtes (en particulier les requêtes de recherche ou de jointure portant sur

~ 8/11~
les colonnes indexées)
- sont utilisés avec la création des clés primaires et étrangères
- permettent de garantir l’intégrité des données dans la BD
Inconvénients:
- Les indexes prennent beaucoup de place en mémoire.
- Ils ralentissent les requêtes d’insertion, modification et suppression => il faut remettre
l’index à jour après chaque manipulation.

7.2 Dites à quel moment le SGBD crée automatiquement des index ?

Sous MySQL, un index est créé automatiquement dans les cas suivants:
- création d’une cl primaire: un index est créé sur toute colonne qui porte une clé primaire.
- création d’une clé étrangère: un index est créé automatiquement sur toute colonne qui porte
une clé étrangère.
- création d’une contrainte UNIQUE sur un champ: un index est créé automatiquement sur
toute colonne qui porte des valeurs uniques.

7.3 Formulez la requête SQL pour créer un index sur la colonne nom de la table Client.

7.4 Formulez la requête SQL pour supprimer l’index créé à la question précédente.

~ 9/11~
8. Ajout des données à une table : INSERT
8.1 Formulez les requêtes SQL pour insérer les lignes de toutes les tables.

8.2 Formulez la requête SQL pour ajouter le client suivant : (4, Alaoui, 8 Grand Rue, Fès). Est-ce qu’on
peut ajouter ce client ? Justifier.

Ce client ne peut pas être ajouté car le numéro du client est une clé primaire et la valeu 4 existe
dans la table.

~ 10/11~
8.3 Formulez la requête SQL pour ajouter le client suivant : (11, Tazi, Rue Principale 10). Est-ce qu’on
peut ajouter ce client ? Justifier.

Ce client peut être ajouté car la colonne ville peut être NULL.

8.4 Formulez la requête SQL pour ajouter la commande suivante : (5, 5.1.2016, 10). Est-ce qu’on peut
ajouter cette commande ? Justifier.

Insertion des lignes dans la table commande:

La 2ème insertion est avec warning !

Cette commande ne peut pas être ajoutée car le client N°10 n’existe pas alors qu’il y a la contrainte
de clé étrangère sur la colonne numcli dans la table commande.

~ 11/11~
8.5 Formulez la requête SQL pour ajouter l’enregistrement suivant (numcom=1, npro=2, qcom=2) dans la
table DetailCom. Est-ce qu’on peut ajouter cet enregistrement ? Justifier.

Insertion des données dans la table produit:

insert into detailcom values (1,2,2);


Oui l’enregistrement peut être ajouté sans problème. la clé primaire de la table detailCom est le
couple (numCom, npro)

9. Modification des lignes d’une table : UPDATE


9.1 Formulez la requête SQL pour modifier le n° de la commande 4 en 5. Est-ce qu’on peut faire cette
modification ? Justifier.

la commande N°4 ne peut pas changer de numéro puisqu’elle est référencée dans la table detailCom
avec une clé étrangère. Il faudra changer la contrainte de clé étrangère pour pouvoir propager la
mise à jour.

9.2 Formulez la requête SQL pour modifier l’enregistrement (numcom=1, npro=1, qcom=2) en (numcom=1,
npro=1, qcom=3) dans la table DetailCom. Est-ce qu’on peut faire cette modification ? Justifier.

~ 12/11~
Oui, on peut faire cette modification puisque la mise à jour ne porte pas sur une colonne concernée
par une contrainte de clé étrangère.

9.3 Est-ce qu’on peut remplacer dans la commande N° 2 le client N°3 par le client N° 1 ? Justifier.

Oui. Même justification que la question précédente.

10. Surpression des lignes d’une table : DELETE


10.1 Formulez la requête SQL pour supprimer le client N° 5. Est-ce qu’on peut supprimer ce client ? Justifier.

delete from client where numcli=5; on peut le supprimer

10.2 Est-ce qu’on peut supprimer le client N° 4 ? Justifier.

On ne peut pas supprimer le client N°4 car il est référencé dans la table des commandes.

~ 13/11~
~ 14/11~

Vous aimerez peut-être aussi