BDD – Chapitre 1
●Combiner les opérateurs pour exprimer des requêtes
Ex : Soit la base de données de 3 tables de schémas :
DEPOT(RefDepot, Adresse)
PRODUIT(RefP, Type)
STOCK(RefDepot, RefP, Quantite)
Exprimer la requête suivante : « Donner pour chaque dépôt les produits de type « Table » qu'il n'a pas en
stock. »
(DEPOT x PRODUIT) : ((Type = « Table ») [RefDepot, RefP]) – STOCK[RefDepot, RefP]
II. Requêtes SQL simples
Elles sont de la forme :
SELECT<liste d'expressions>
FROM <liste de variables de relations>
WHERE<conditions>
La <condition> peut contenir des sous-requêtes (= requêtes imbriquées).
Ex : (requête ci-dessus)
SELECT D.RefDepot, P.RefP
FROM DEPOT D, PRODUIT P
WHERE P.Type = « Table »
AND (D.RefDepot, P.RefP) NOT IN
(SELECT RefDepot, RefP
FROM STOCK
);
Forme générale d'une requête SQL :
SELECT Exp1, ..., Expn
FROM Rel1.R1, Rel2.R2, ..., Relk.Rk
WHERE F;
=> s'exécute par la procédure :
Pour tout R1 Є Rel1, ..., pour tout Rk Є RelK
Faire
Si F alors
Calculer et Afficher Exp1, ..., Expn
Cas particulier : Si Exp1, ..., Expn sont des attributs distincts A1, ..., An on obtient la relation :
((R1 x ... x Rk) : F) [A1, ..., An] où R1 est une copie de la relation Rel1
Rk ........................................ Relk
page 2 / 6