24
Opérations sur les requêtes

Le langage SQL

Embed Size (px)

DESCRIPTION

Le langage SQL. Opérations sur les requêtes. MCD : Modèle conceptuel de données. Fournir. Situer. Commander. Habiter. VILLES. CLIENTS. PRODUITS. FOURNISSEURS. 1,n. 1,n. Fournisseur Nom. Villes Nbh. Produit Libelle Prix Couleur Origine Stock. Client Nom. Quantite. Quantite. - PowerPoint PPT Presentation

Citation preview

Page 1: Le langage SQL

Opérations sur les requêtes

Page 2: Le langage SQL

MCD : Modèle conceptuel de données

PRODUITS

ProduitLibellePrixCouleurOrigineStock

CLIENTS

ClientNom

VILLES

VillesNbh

FOURNISSEURSFournisseur

Nom

Commander

Quantite

Habiter

Situer

Fournir

Quantite

1,n

1,11,n

1,n

1,n

1,n

1,1

1,n

Page 3: Le langage SQL

Descriptif des tablesPRODUITS (Produit , Libelle , Prix , Couleur , Origine , Stock)

CLIENTS (Client , Nom , #Ville)

FOURNISSEURS (Founisseur , Nom , #Ville)

VILLES (Ville , Nbh)

Commander (#Client, #Produit , Quantite)

Fournir (#Founisseur, #Produit, Quantite)

Page 4: Le langage SQL

La divisionQuestion

Comment afficher les numéros des clients qui ont commandé tous les produits ?

Réponse Il suffit de compter les lignes de commandes passées par

chaque client et ne retenir que ceux dont ce nombre est égal au nombre de produits.

SELECT ClientFROM CommanderGROUP BY ClientHAVING Count(DISTINCT PRODUIT) =(

SELECT Count(*) FROM PRODUITS)

Nombre de lignes de commandes par client.

Nombre de lignes de la table PRODUITS

Page 5: Le langage SQL

L’UnionSELECT Colonne1, Colonne2, …, ColonneN

FROM [Table 1]

WHERE [Condition1]

UNION [ALL] (ne supprime pas les doublons)

SELECT Colonne1’, Colonne2’, …, ColonneN’

FROM [Table 1’]

WHERE [Condition2]

Le mot clé « ALL » permet de spécifier que l’on désire voir les doublons apparaitre. S’il est absent les doublons n’apparaitront pas dans le résultat de la requête.

Page 6: Le langage SQL

L’Union : ExempleQuestion

Comment afficher les libellés des produits commandés par les clients numéro « 7 » ou numéro « 12 » ?

RéponseIl faut effectuer une union entre les deux ensembles

(union compatible).

Page 7: Le langage SQL

L’Union : Résultat sans doublons

SELECT LibelleFROM PRODUITS A INNER JOIN Commander B ON A.Produit = B.ProduitWHERE Client = 7UNIONSELECT LibelleFROM PRODUITS A INNER JOIN Commander B ON A.produit = B.produitWHERE Client = 12

Requête A

Requête B

Page 8: Le langage SQL

L’Union : Résultat avec doublons

SELECT LibelleFROM PRODUITS A INNER JOIN Commander B ON A.Produit = B.ProduitWHERE Client = 7UNION ALLSELECT LibelleFROM PRODUITS A INNER JOIN Commander B ON A.produit = B.produitWHERE Client = 12

Requête A

Requête B

On garde les

doublons

Page 9: Le langage SQL

L’Union : Résultats

Libelle

Cerise

Pomme

Libelle

Pomme

Mangue

Ananas

Libelle

Cerise

Pomme

Mangue

Ananas

Libelle

Cerise

Pomme

Pomme

Mangue

Ananas

Requête A Requête B

UNION

Sans doublons [ALL] : Avec doublons

Page 10: Le langage SQL

L’IntersectionSELECT Colonne1, Colonne2, …, ColonneN

FROM [Table 1]

WHERE [Condition1]

INTERSECT

SELECT Colonne1’, Colonne2’, …, ColonneN’

FROM [Table 1’]

WHERE [Condition2]

Page 11: Le langage SQL

L’Intersection : ExempleQuestion

Comment afficher les numéros des clients ayant commandé des produits de couleur inconnue et des produits de couleur « rouge ».

RéponseRéaliser l’intersection entre les deux ensembles.

Page 12: Le langage SQL

L’Intersection : Exemple [2]

SELECT ClientFROM Commander A INNER JOIN PRODUITS B ON A.Produit = B.ProduitWHERE Couleur is nullINTERSECTSELECT ClientFROM Commander A INNER JOIN PRODUITS B ON A.Produit = B.ProduitWHERE Couleur = ‘rouge’

Requête A

Requête B

Page 13: Le langage SQL

L’Intersection : Résultats

Client

1

5

5

6

9

9

10

11

12

Client

5

5

7

9

9

10

10

Client

5

9

10

Requête A

Requête B

INTERSECT

Page 14: Le langage SQL

La DifférenceSELECT Colonne1, Colonne2, …, ColonneN

FROM [Table 1]

WHERE [Condition1]

MINUS

SELECT Colonne1’, Colonne2’, …, ColonneN’

FROM [Table 1’]

WHERE [Condition2]

Page 15: Le langage SQL

La Différence : ExempleQuestion

Comment trouver les numéros des clients qui n’ont qui n’ont jamais passer de commande ?

RéponseÔter les numéros des clients ayant commandé quelque

chose de la liste des numéros de tous les clients.

SELECT Client FROM CLIENTSMINUSSELECT DISTINCT Client FROM Commander

Page 16: Le langage SQL

Le qualificateur ALLLe qualificateur « ALL » permet de vérifier une relation entre un élément et un ensemble d’éléments de même type.

SELECT Colonne1, Colonne2, …, ColonneN

FROM [Table1]

WHERE [Condition1]

AND Colonne1 ALL (

SELECT Colonne1

FROM [Table2]

WHERE [Condition2]

)

Ou signifie : >, <, >=, <=, <>.

Page 17: Le langage SQL

Le qualificateur ALL : ExempleQuestion

Trouver les libellés des produits moins chers que tous les produits de couleur « rouge ».

RéponseConstruire un ensemble constitué des prix des produits

de couleur « rouge ».Afficher les libellés et les prix des produits moins chers

que tous les éléments de l’ensemble précédemment constitué.

Page 18: Le langage SQL

Le qualificateur ALL : RésultatSELECT Libelle, PrixFROM PRODUITSWHERE Couleur != ‘rouge’AND Prix < ALL (

SELECT Prix FROM PRODUITS WHERE Couleur = ‘rouge’

)

Prix

2,1

3,2

Libelle Prix

Ananas 1.5

Coing 0,75

Orange 1,3

Prune 1,3

Page 19: Le langage SQL

Le qualificateur ANYIl s’agit de vérifier une relation entre un élément et au moins l’un des éléments d’un ensemble de même type.

SELECT Colonne1, Colonne2, …, ColonneN

FROM [Table1]

WHERE [Condition1]

AND Colonne1 ANY (

SELECT Colonne1

FROM [Table2]

WHERE [Condition2]

)

Ou signifie : >, <, >=, <=, <>.

Page 20: Le langage SQL

Le qualificateur ANY : ExempleQuestion

Trouver les libellés des produits plus chers qu’un produit de couleur « rouge ».

RéponseConstruire un ensemble constitué des prix des produits

de couleur « rouge ».Afficher les libellés et les prix des produits plus chers

qu’un des éléments de l’ensemble précédemment constitué.

Page 21: Le langage SQL

Le qualificateur ANY : RésultatSELECT Libelle, PrixFROM PRODUITSWHERE Couleur != ‘rouge’AND Prix > ANY (

SELECT Prix FROM PRODUITS WHERE Couleur = ‘rouge’

)

Prix

2,1

3,2

Libelle Prix

Figue 2,52

Date 3,15

Kaki 3,11

Litchi 2,5

Page 22: Le langage SQL

L’opérateur EXISTSPermet de savoir si un « SELECT » produit au moins une ligne « VRAI » ou ne produit aucune ligne « FAUX ».

SELECT Colonne1, Colonne2, …, ColonneN

FROM [Table1]

WHERE EXISTS (

SELECT Colonne1

FROM [Table2]

WHERE [Condition2]

)

Page 23: Le langage SQL

L’opérateur EXISTS : ExempleQuestion

Trouver les numéros et les noms des clients ayant commandé au moins un produit

RéponseIls s’agit des clients pour lesquels il existe au moins un

enregistrement dans la table « Commander ».

Page 24: Le langage SQL

L’opérateur EXISTS : RésultatSELECT Client, NomFROM CLIENTSWHERE EXISTS (

SELECT Client FROM Commander)

Client Nom

1 Maynard

2 Gorgeret

4 Bedin

5 Corgier

6 Goujon

Le client numéro 3 n’a passé aucune commande.