La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Le langage SQL. Voir polycopié: Introduction à SQL SQL.

Présentations similaires


Présentation au sujet: "Le langage SQL. Voir polycopié: Introduction à SQL SQL."— Transcription de la présentation:

1 Le langage SQL

2 Voir polycopié: Introduction à SQL SQL

3 Afficher les employés dont les salaires sont inférieurs à 900 ? SELECT * FROM emp WHERE sal<900 ; Afficher les employés dont les salaires sont inférieurs à la moyenne des salaires du département 10 ? SELECT * FROM emp WHERE sal< ; SQL – Les sous requêtes X  SELECT AVG(sal) FROM emp WHERE deptno=10 Solution: SELECT * FROM emp WHERE sal<(SELECT AVG(sal) FROM emp WHERE deptno=10);

4  Exécution SELECT * FROM emp WHERE sal<(SELECT AVG(sal) FROM emp WHERE deptno=10); 1- Exécution de la sous-requête SELECT * FROM emp WHERE sal<2916,66; 2- Exécution de la requête principale... SQL – Les sous requêtes

5  Règles d’utilisation d’une Sous-Requête SELECT * FROM emp WHERE sal<(SELECT sal FROM emp WHERE deptno=10); La sous-requête renvoie une relation à une colonne et à plusieurs lignes. Peut-on comparer une valeur de sal à plusieurs valeurs de sal via l’opérateur < ? NON ! Dans ce cas (<), la sous-requête doit renvoyer une seule valeur, soit une relation à une colonne et à une ligne. SQL – Les sous requêtes

6  Plus généralement: SELECT colonne(s) FROM table WHERE exp(s) OPERATEUR (SELECT col(s) FROM table); Une ligne et une colonneUne ligne et plusieurs colonnes =, !=,>,≥,<,≤=, != Plusieurs lignes et une colonne Plusieurs lignes et plusieurs colonnes  [NOT] IN  (=, !=,>,≥,<,≤) ANY/ALL [NOT] IN SQL – Les sous requêtes Afficher les employés ayant le même job et salaire que SMITH ? Afficher les employés les moins payés dans chaque département?

7  Les mots clé ANY et ALL - Les SR qui produisent plusieurs lignes sont utilisées avec les opérateurs suivants :  IN, la condition est vraie si notre exp est égale à l’une des lignes retournées par la SR.  op ANY, la condition est vraie si la comparaison (en utilisant l’opérateur op) est vraie pour n’importe quelle valeur de la relation résultante.  op ALL suivie d’une liste de valeurs, la condition est vraie si la comparaison (en utilisant l’opérateur op) est vraie pour toute valeur de la relation résultante. Afficher les employés qui sont mieux payés que n’importe quel employé du département 10 ? SELECT * FROM emp WHERE sal >ANY (SELECT sal FROM emp WHERE deptno=10); SQL – Les sous requêtes

8  Les mots clé ANY et ALL - Les SR qui produisent plusieurs lignes sont utilisées avec les opérateurs suivants :  IN, la condition est vraie si notre exp est égale à l’une des lignes retournées par la SR.  op ANY, la condition est vraie si la comparaison (en utilisant l’opérateur op) est vraie pour n’importe quelle valeur de la relation résultante.  op ALL suivie d’une liste de valeurs, la condition est vraie si la comparaison (en utilisant l’opérateur op) est vraie pour toute valeur de la relation résultante. Afficher les employés qui sont mieux payés que tous les employés du département 10 ? SELECT * FROM emp WHERE sal >ALL (SELECT sal FROM emp WHERE deptno=10); SQL – Les sous requêtes

9  Les Sous-Requête corrélées - Afficher chaque employé dont le salaire est supérieur à la moyenne des salaires de son département? SELECT * FROM emp X WHERE X.sal> (salaire moyenne du département de l’employé fixé) SELECT * FROM emp X WHERE X.sal> (SELECT AVG(sal) FROM emp Y WHERE X.deptno=Y.deptno);  Exécution 1- La requête principale fixe une ligne de la table EMP, c’est une ligne dite candidate. 2- Ayant maintenant X.DEPTNO, la sous-requête est exécutée. 3- La condition de la clause WHERE de la requête principale est évaluée, la ligne est retournée ou non suivant la valeur de la condition (TRUE ou FALSE). 4- Itération des étapes 1, 2 et 3 pour les lignes restantes de la table EMP. SQL – Les sous requêtes

10  Exécution SELECT * FROM emp X WHERE sal> (SELECT AVG(sal) FROM emp Y WHERE X.deptno=Y.deptno); SELECT * FROM emp X WHERE sal> (SELECT AVG(sal) FROM emp Y WHERE Y.deptno=20); SELECT * FROM emp X WHERE sal> 2175; SQL – Les sous requêtes

11  Exécution SELECT * FROM emp X WHERE sal> (SELECT AVG(sal) FROM emp Y WHERE X.deptno=Y.deptno); SELECT * FROM emp X WHERE sal> (SELECT AVG(sal) FROM emp Y WHERE Y.deptno=30); SELECT * FROM emp X WHERE sal> 1566,66; SQL – Les sous requêtes

12  La division -Afficher les a qui sont en relation avec tous les b de S ? -Pour savoir si a1 est en relation avec tous les b de S, on peut calculer ceci pour a1: {Tous les b de S} MINUS {Les b en relation avec a1} = Ø SQL – Les sous requêtes B b1 b2 AB a1b1 a1b2 a2b2 R S ÷B÷B SELECT A FROM R X WHERE NOT EXISTS(SELECT B FROM S MINUS SELECT B FROM R Y WHERE Y.A=X.A);

13  La division -Afficher les a qui sont en relation avec tous les b de S ? B b1 b2 AB a1b1 a1b2 a2b2 R S ÷B÷B SQL – Les sous requêtes {b1,b2} / {b1,b2}= Ø {b1,b2} / {b1,b2}= Ø {b1,b2} / {b2}= {b1} SELECT A FROM R X WHERE NOT EXISTS(SELECT B FROM S MINUS SELECT B FROM R Y WHERE Y.A=X.A);

14  La division – un autre exemple F (NF, NOMF, VILLEF) /*Table des fournisseurs*/ P (NP, NOMP, COULEUR, POIDS, VILLEP) /*Table des pièces*/ J (NJ, NOMJ, DLANC, VILLEJ) /*Table des projets*/ FPJ (NF, NJ, NP, QTE, DLIV) /*Table association qui inclut une livraison faite par un Feur NF d’une quantité QTE d’une pièce NP pour un projet NJ à une date DLIV*/ NP P2 P5 NFNJNP F1J1P2 F2J3P5 F3J1P5 F2J1P2 FPJ P SQL – Les sous requêtes NF F1 F2 F3 F NJ J1 J3 J

15  La division – un autre exemple - Afficher les codes de fournisseurs qui ont livré toutes les pièces? NP P2 P5 NFNJNP F1J1P2 F2J3P5 F3J1P5 F2J1P2 FPJ P SQL – Les sous requêtes F NJ J1 J3 J NF F1 F2 F3 SELECT NF FROM FPJ X WHERE NOT EXISTS(SELECT NP FROM P MINUS SELECT NP FROM FPJ Y WHERE Y.NF=X.NF);

16  La division – un autre exemple NP P2 P5 NFNJNP F1J1P2 F2J3P5 F3J1P5 F2J1P2 FPJ P SQL – Les sous requêtes F NJ J1 J3 J NF F1 F2 F3 SELECT NF FROM FPJ X WHERE NOT EXISTS(SELECT NP FROM P MINUS SELECT NP FROM FPJ Y WHERE Y.NF=X.NF); {P2,P5} / {P2}= {P5} {P2,P5} / {P2,P5}= Ø {P2,P5} / {P5}= {P2} {P2,P5} / {P2,P5}= Ø NFNJNP F1J1P2 F2J3P5 F3J1P5 F2J1P2 XX FPJ Y

17 Erreurs SQL à éviter (1)


Télécharger ppt "Le langage SQL. Voir polycopié: Introduction à SQL SQL."

Présentations similaires


Annonces Google