SQL Exercices Solutionnés
SQL Exercices Solutionnés
SQL Exercices Solutionnés
C'est un outil de raisonnement qui permet de décomposer quelles sont les opérations
élémentaires à faire sur une base de données pour obtenir les résultats souhaités.
Exemple de résultat :
Afficher la liste de tous les clients ayant passé une commande avant le 31 Décembre 1998.
De même qu'une addition utilise des nombres comme opérandes et a toujours un nombre comme
résultat, une opération en algèbre relationnelle utilise une ou plusieurs relations comme
opérandes et a toujours pour résultat une relation.
De même qu'il existe plusieurs opérations sur les nombres (addition, soustraction, etc..), il existe
différentes opérations que l'on peut faire sur les relations d'un schéma relationnel.
Pour comprendre facilement l'algèbre relationnelle, il faut se représenter chaque relation d'un
schéma relationnel comme un tableau dont chaque colonne est en fait un attribut de la relation.
enfant
EnfantId EnfantNom EnfantPrenom
1234 Radroite Sylvie
54321 Phoutus Honnet
S.Q.L. (Structured Query Language) est un langage de programmation particulier qui permet de
manipuler des bases de données relationnelles.
S.Q.L. se retrouve aujourd'hui dans la très grande majorité des S.G.B.D. (Système de Gestion de
Bases de Données), et fonctionne sur des plates-formes allant des gros systèmes aux micro-
ordinateurs.
Exemple de S.G.B.D. utilisant S.Q.L. pour la gestion des données : MS-ACCESS, ORACLE,
SYBASE, INFORMIX, DB2, INGRES, SQLSERVER...
S.Q.L. fait l'objet d'une normalisation (la norme actuelle est la norme ANS 1985), et le fait qu'il
soit devenu un standard dans l'interrogation des bases de données, n'empêche pas les éditeurs de
S.G.B.D. d'avoir des versions de SQL qui diffèrent légèrement les unes des autres, ce qui limite
considérablement la portabilité des bases de données d'un environnement à un autre.
S.Q.L. n'est pas un langage de programmation au sens classique du terme, c'est un langage qui
permet de faire des manipulations sur des bases de données (ou requêtes).
1
Outils pour la conception de systèmes d'information
Le langage de contrôle des données (L.C.D.) doit permettre la sécurité des données, et leur
confidentialité (qui a le droit de faire quoi, et sur quoi ?), réservé à l'administrateur de la base
(le DBA).
Exemple d'opérations de mise à jour : changer dans la base l'adresse d'un client car il a
déménagé.
2
Outils pour la conception de systèmes d'information
3
Outils pour la conception de systèmes d'information
1. L'égalité
NouvelleRelation = RelationUtilisée
Syntaxe en SQL :
SELECT *
FROM RelationUtilisée
Exemple : Ecrire en AR, puis en SQL une requête ayant pour effet d'afficher tous les
renseignements concernant tous les fournisseurs.
AR : Relation = fournisseurs
2. La projection
Cette opération de l'algèbre relationnelle a pour rôle de créer une nouvelle relation ne contenant
qu'une partie des attributs (colonnes) issue d'une ou plusieurs tables.
Syntaxe en SQL :
SELECT attr1,attr2,…attrn
FROM Relation1
Exemple : Ecrire en AR, puis en SQL une requête ayant pour effet d'afficher les noms de tous
les fournisseurs.
AR : Relation= Projection(fournisseurs(frs_nom))
4
Outils pour la conception de systèmes d'information
Exemple : Ecrire en AR, puis en SQL une requête ayant pour effet d'afficher les noms de tous
les articles existant.
AR : Relation= Projection(articles(art_nom))
Le problème : si on la laisse en l'état, cette requête affiche les répétitions, qui dans ce cas précis,
ne sont pas souhaitables.
Pour éliminer les "doublons" dans le résultat, il existe une "clause" SQL qui est la clause
"DISTINCT". Si on écrit la requête précédente comme suit :
Résultat : Affichage de la liste des noms des articles avec suppression des doublons
La sélection est l'opération de l'algèbre relationnelle qui permet de sélectionner des lignes (n-
uplets) d'une ou plusieurs tables répondant à certains critères.
AR : Relation= selection(RelationUtilisée(condition))
SQL : SELECT *
FROM RelationUtilisée
WHERE condition
Exemple : Ecrire en AR, puis en SQL une requête ayant pour effet d'afficher tous les
renseignements sur les articles de couleur rouge.
SQL : SELECT *
FROM articles
WHERE art_coul = "ROUGE"
5
Outils pour la conception de systèmes d'information
Exemple : Ecrire en AR, puis en SQL une requête ayant pour effet d'afficher tous les
renseignements sur les clients dont le numéro est compris entre 5 et 15.
SQL : SELECT *
FROM clients
WHERE clt_num BETWEEN 5 AND 15
Exemple : Ecrire en AR, puis en SQL une requête ayant pour effet d'afficher tous les
renseignements sur les clients dont le nom comporte la lettre "C".
SQL : SELECT *
FROM clients
WHERE clt_nom LIKE "%C%"
Exemple : Afficher les articles dont le prix de vente est supérieur ou égal à 2 fois le prix d'achat
SQL : SELECT *
FROM articles
WHERE art_pv >= 2 * art_pa
SQL : SELECT *
FROM articles
WHERE art_coul IN ("ROUGE","VERT")
SELECT *
FROM articles
WHERE art_coul = "ROUGE" or art_coul = "VERT"
Autre exemple : Afficher tous les articles qui ont été vendus
Principe :
6
Outils pour la conception de systèmes d'information
SQL : SELECT *
FROM articles
WHERE art_num IN (SELECT DISTINCT art_num
FROM ventes)
C'est l'instruction entre parenthèses qui est effectuée en premier. Ceci s'appelle une requête
imbriquée.
SQL : SELECT *
FROM articles
WHERE art_poids IS NULL
SQL : SELECT *
FROM articles
WHERE NOT art_coul = "ROUGE"
(ou bien art_coul <> "ROUGE")
7
Outils pour la conception de systèmes d'information
- Avec AND
Exemple : Afficher tous les articles qui sont rouges et dont le poids dépasse 100 grammes
SQL : SELECT *
FROM articles
WHERE art_coul = "ROUGE" AND art_poids > 100
Ordre des opérateurs logiques : NOT est prioritaire sur AND qui est prioritaire sur OR.
SQL : SELECT *
FROM articles
WHERE NOT ( art_coul = "ROUGE" OR art_coul = "VERT")
Ou bien : WHERE NOT art_coul = "ROUGE" AND NOT art_coul = "VERT"
SELECT *
FROM articles
WHERE NOT art_coul = "ROUGE" art_coul = "VERT", alors, on affiche les articles qui
ne sont pas rouges ou bien qui sont verts, c'est à dire qu'on affiche les articles verts.
Il s'agit de sélectionner certaines colonnes des lignes satisfaisant à la condition indiquée dans la
clause WHERE.
8
Outils pour la conception de systèmes d'information
5. La jointure :
On fait une opération de jointure quand on établit un lien entre une colonne d'une table et une
colonne d'une autre table (par exemple : entre le numéro de fournisseur se trouvant dans le table
article et le numéro de fournisseur se trouvant dans la table fournisseur).
Les opérations de jointure servent à récupérer, par exemple, le nom du fournisseur fournissant
l'article numéro 5 alors que dans la table ARTICLE, on n'a que le numéro du fournisseur :
SELECT frs_nom
FROM fournisseurs
WHERE frs_num IN ( SELECT frs_num
FROM articles
WHERE art_num = 5)
Remarque :
on est obligé de préciser le nom de la table uniquement quand les attributs portent le même nom.
Req 1 : Afficher la liste des articles fournis par le fournisseur "SARL ROULAND"
Req 2 : Afficher le nom des fournisseurs qui ne fournissent pas d'articles rouges.
Req 3 : Afficher les coordonnées des clients ayant commandé des produits en une quantité
supérieure à 50.
Req 4 : Afficher la liste des articles de la même couleur que l'article 10.
9
Outils pour la conception de systèmes d'information
• Exemple 1 :
Affichage du numéro, nom et poids de tous les articles triés l'ordre croissant de leur poids
ou bien
ou bien
Liste des nom, numéro, poids et prix d'achat des articles de poids inférieur à 100 selon l'ordre
décroissant de leur prix d'achat
• Exemple 3 :
Tri des articles de poids inférieur à 100 selon l'ordre croissant de leur poids et à poids égal, par
prix d'achat décroissant
10
Outils pour la conception de systèmes d'information
Exemple : Afficher le nom et la marge bénéficiaire sur tous les produits, par ordre croissant sur
la valeur de la marge
ou bien
On indique par "art-pv - art_pa as marge" que la variable temporaire "marge" est égale à la
différence entre art-pv et art_pa.
Ces fonctions du langage SQL effectuent un calcul sur des ensembles de valeurs.
Elle calcule la moyenne des valeurs dans l'attribut (qui doit être de type numérique)
SELECT AVG(art_poids)
FROM articles;
SELECT SUM(art_poids)
FROM articles
11
Outils pour la conception de systèmes d'information
• Autre exemple : Compter tous les nuplets (= toutes les lignes) de la table ARTICLES.
SELECT count *
FROM articles;
74. Recherche de la plus grande (ou de la plus petite) valeur dans un attribut : MAX (ou
MIN)
• Exemple : Liste des articles dont le prix de vente est supérieur au prix de vente de l'article de
couleur blanche le moins cher (Recherche de la plus petite valeur dans l'attribut : MIN, même
utilisation que MAX).
SELECT art_nom
FROM articles
WHERE art_pv > (SELECT MIN(art_pv
FROM articles
WHERE art_coul = 'BLANC')
Crée des sous-tables dans une table en fonction de la valeur d'un critère donné : c'est à dire que
GROUP BY partitionne la table en sous-tables ayant la même valeur pour 1 attribut ou un
groupe d'attributs.
Les fonctions de groupe présentées ci-dessus sont alors calculées pour chaque sous-table.
12
Outils pour la conception de systèmes d'information
• Exemple 2 : Calcul du prix moyen des ventes des articles rangés par couleur
SQL crée les groupes d'après les différentes valeurs de art_coul, puis, pour chaque valeur de
art_coul, calcule le prix moyen des ventes.
Si, dans le cas de notre exemple, certaines couleurs n'étaient pas indiquées, un groupe est créé
pour chaque n-uplet de couleur indéfinies.
• Exemple 3 : Calcul du prix moyen des ventes des articles rangés par couleur en excluant les
articles dont le prix d'achat est inférieur à 5
• Exemple 4 : Calcul du prix moyen des ventes des articles rangés par couleur en excluant les
articles dont le prix d'achat est inférieur à 5, les couleurs devant être affichées dans l'ordre
lexicographique
• Exemple 5 : Calcul par article de la remise totale accordée par rapport au prix de vente
catalogue pour la semaine allant du 23 au 30 Décembre 97, l'affichage doit être trié sur le
numéro d'article.
13
Outils pour la conception de systèmes d'information
C'est l'équivalent de WHERE mais appliqué aux groupes, on ne peut donc utiliser cette clause
que si on a utilisé une fonction de groupe ou la clause GROUP BY.
Un petit truc : il faut utiliser la clause "HAVING" quand on a envie d'écrire "WHERE
COUNT…", qui n'est pas accepté par SQL.
• Exemple : Afficher les magasins ayant réalisé plus de 2 ventes entre le 231197 et le 301197
• Exemple : Afficher les noms et numéros des fournisseurs fournissant plus de 4 articles :
SELECT…
FROM….
WHERE….
GROUP BY….
HAVING….
14
Outils pour la conception de systèmes d'information
Exemple1 :
ou bien
Exemple 2 :
Ou bien
Exemple 3 :
On suppose pour cet exemple qu'une table CLIENTSBIS a été créée, ayant le même schéma que
la table CLIENTS, et qu'on veut y mettre tous les nuplets concernant les clients parisiens.
15
Outils pour la conception de systèmes d'information
DELETE *
FROM articles;
Exemple 1 : Doubler le prix de vente de tous les articles dont le poids est inférieur à 100
UPDATE articles
SET art_pv = art_pv * 2
WHERE art_poids <100;
Exemple 2 : Donner à tous les articles le même prix de vente qui est en fait le prix de vente
moyen actuel
UPDATE articles
SET art_pv = (SELECT AVG(art_pv)
FROM articles)
16