Le langage SQL
-
Upload
amaya-goodwin -
Category
Documents
-
view
39 -
download
0
description
Transcript of Le langage SQL
![Page 1: Le langage SQL](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/1.jpg)
Opérations sur les requêtes
![Page 2: Le langage SQL](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/2.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/3.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/4.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/5.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/6.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/7.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/8.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/9.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/10.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/11.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/12.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/13.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/14.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/15.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/16.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/17.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/18.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/19.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/20.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/21.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/22.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/23.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062321/56813582550346895d9ce140/html5/thumbnails/24.jpg)
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.