Académique Documents
Professionnel Documents
Culture Documents
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.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.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.
~ 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 ».
~ 4/11~
La commande standard SQL ne marche pas avec MySQL
✓ 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.
~ 6/11~
✓ numcli de la table client : est une clé primaire.
Répétition
~ 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.
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.
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.
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.
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.
On ne peut pas supprimer le client N°4 car il est référencé dans la table des commandes.
~ 13/11~
~ 14/11~