«U»€¦ · § ¨U© XEROX PARC 1999 , Synchronicity: The Inner Path of Leadership («
26/ 04/ 2007 Auto-Jointure : SELECT * FROM Nom_relation R1 INNER JOIN Nom_relation R2 ON...
Transcript of 26/ 04/ 2007 Auto-Jointure : SELECT * FROM Nom_relation R1 INNER JOIN Nom_relation R2 ON...
26/ 04/ 2007
Auto-Jointure :SELECT *FROM Nom_relation R1 INNER JOIN Nom_relation R2 ON
Condition_de_jointure;
ProblèmesSi des attributs de même nom et de signification différente apparaissent dans les tables jointes, ils seront utilisés pour réaliser la jointure naturelle. D'où un fort risque d'erreur non maîtrisées !Si un attribut possède deux noms différent dans les deux tables, la jointure ne peut pas avoir lieu
Jointure externe: SELECT *FROM Nom_relation1 R1, Nom_relation2 R2WHERE R1.Attr1= R2.Attr2 (+);
Jointure externe SQL2:SELECT *FROM Nom_relation1 LEFT OUTER JOIN Nom_relation2 ON
Condition_de_jointure;
SELECT *FROM Nom_relation2 RIGHT OUTER JOIN Nom_relation1 ON
Condition_de_jointure;
SELECT *FROM Nom_relation1 FULL OUTER JOIN Nom_relation2 ON
Condition_de_jointure;
Jointure procédurale:SELECT *FROM Nom_de_relation1
WHERE Nom_Attribut1 IN (SELECT Nom_attribut2FROM Relation2);
Sous interrogation dans la clause FROM:SELECT *FROM Nom_relation1, (SELECT…FROM Nom_relation2) alias_rel2
WHERE (condition);
Sous interrogations synchronisées:SELECT *FROM Nom_relation1 alias_rel1
WHERE Nom_col (SELECT …FROM Nom_relation2 alias_rel2WHERE alias_rel1.x alias rel2.y)
[ AND…..];
à prendre parmi { <, >, <=, >=, IN }
Cherchons donc à trouver les clients qui ont un prénom en commun. Autrement dit pour qu'un client soit sélectionné, il faut qu'un autre client porte le même prénom.
Différence :
SELECT Liste_attributs FROM Nom_De_Relation1MINUSSELECT Liste_attributs FROM Nom_De_Relation2
SELECT CODCAT, LIB_CAT FROM CATEGORIE
MINUS
(SELECT C.CODCAT, LIB_CAT FROM CATEGORIE C, PRODUIT P
WHERE C.CODCAT=P.CODCAT AND PRIX_HT> 100);
SELECT Liste_attributs FROM Nom_De_Relation1WHERE Nom_attribut NOT IN( SELECT Nom_attribut FROM Nom_De_Relation2[WHERE <Condition de restriction>]);
OUSELECT Liste_attributs FROM Nom_De_Relation1 R1WHERE NOT EXISTS
(SELECT *FROM Nom_De_Relation2 R2WHERE R2.Nom_attribut = R1.Nom_attribut):
Union :
SELECT Liste_attributsFROM Nom_De_Relation1[WHERE <Condition de restriction> ]
UNIONSELECT Liste_attributs
FROM Nom_De_Relation2[WHERE <Condition de restriction>]
Intersection :
SELECT Liste_attributsFROM Nom_De_Relation1[WHERE <Condition de restriction> ]
INTERSECTSELECT Liste_attributs
FROM Nom_De_Relation2[WHERE <Condition de restriction>]
Division (inclusion d’un ensemble dans un autre):SELECT Liste FROM Nom_Relation R
WHERE NOT EXISTS(SELECT Liste1 FROM Nom_Relation1
MINUSSELECT Liste2 FROM Nom_Relation2
WHERE Nom_Relation2.attr=R.attr )
Division exacte (égalité des ensembles) :SELECT Liste FROM Nom_Relation R
WHERE NOT EXISTS(SELECT Liste1 FROM Nom_Relation1
MINUSSELECT Liste2 FROM Nom_Relation2
WHERE Nom_Relation2.attr=R.attr )AND NOT EXISTS(SELECT Liste2 FROM Nom_Relation2
WHERE Nom_Relation2.attr=R.attrMINUS
SELECT Liste1 FROM Nom_Relation1)
Requête hiérarchique (interrogation d’une structure arborescente) :
SELECT [LEVEL] Liste_résultat FROM Nom_Relation [WHERE Condition][START WITH condition]CONNECT BY PRIOR Condition;
START WITH : Point de départ du parcours de l ’arbre
CONNECT BY PRIOR : Introduit la condition portant sur les colonnes de jointures (Colonne_sup, Colonne_inf)
-Parcours du bas vers le haut
CONNECT BY PRIOR colonne_sup = colonne_inf;
-Parcours du haut vers le bas
CONNECT BY PRIOR colonne_inf = colonne_sup;
Utilisation des fonctions sur les ensembles :Moyenne : AVG([DISTINCT|ALL] expr) Comptage : COUNT([DISTINCT|ALL]{*|expr}) Maximum : MAX([DISTINCT|ALL] expr) Minimum : MIN([DISTINCT|ALL] expr) Somme : SUM([DISTINCT|ALL] expr)
SELECT COUNT(*) FROM PRODUIT;
SELECT MAX(PRIX_HT*TAUX_TVA)
FROM PRODUIT P, CATEGORIE C
WHERE P.CODCAT= C.CODCAT;
Regroupement de n-uplets – Sous ensembles
Sous ensembles constitués par rapport à un ou plusieurs critères de regroupement :
Dans un sous ensemble les critères de regroupement ont même valeur
Autant de sous-ensembles que de valeurs différentes
Regroupement de n-uplets – Sous ensembles
SELECT Liste_attributs FROM Nom_De_RelationGROUP BY Liste_attributs_de_regroupement
SELECT CODCAT, Count(*) FROM PRODUIT GROUP BY CODCAT;
SELECT CODCAT, Count(*) FROM PRODUIT WHERE PRIX > 100 GROUP BY CODCAT;
SELECT Liste_attributs FROM Nom_De_RelationGROUP BY Liste_attributs_de_regroupementHAVING Condition
SELECT CODCAT, Count(*) FROM PRODUIT WHERE PRIX > 100
GROUP BY CODCAT HAVING Count (*) > 20;