1 / 24

Le langage SQL

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.

Download Presentation

Le langage SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Le langage SQL Opérations sur les requêtes

  2. 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 1,1 1,n 1,n 1,n 1,1 1,n

  3. Descriptif des tables PRODUITS (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)

  4. La division • Question • 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 Client FROM Commander GROUP BY Client HAVING Count(DISTINCT PRODUIT) = ( SELECT Count(*) FROM PRODUITS ) Nombre de lignes de commandes par client. Nombre de lignes de la table PRODUITS

  5. L’Union SELECT 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.

  6. L’Union : Exemple • Question • Comment afficher les libellés des produits commandés par les clients numéro « 7 » ou numéro « 12 » ? • Réponse • Il faut effectuer une union entre les deux ensembles (union compatible).

  7. L’Union : Résultat sans doublons SELECT Libelle FROM PRODUITS A INNER JOIN Commander B ON A.Produit = B.Produit WHERE Client = 7 UNION SELECT Libelle FROM PRODUITS A INNER JOIN Commander B ON A.produit = B.produit WHERE Client = 12 Requête A Requête B

  8. L’Union : Résultat avec doublons SELECT Libelle FROM PRODUITS A INNER JOIN Commander B ON A.Produit = B.Produit WHERE Client = 7 UNION ALL SELECT Libelle FROM PRODUITS A INNER JOIN Commander B ON A.produit = B.produit WHERE Client = 12 Requête A On garde les doublons Requête B

  9. L’Union : Résultats Requête A Requête B UNION Sans doublons [ALL] : Avec doublons

  10. L’Intersection SELECT Colonne1, Colonne2, …, ColonneN FROM [Table 1] WHERE [Condition1] INTERSECT SELECT Colonne1’, Colonne2’, …, ColonneN’ FROM [Table 1’] WHERE [Condition2]

  11. L’Intersection : Exemple • Question • Comment afficher les numéros des clients ayant commandé des produits de couleur inconnue et des produits de couleur « rouge ». • Réponse • Réaliser l’intersection entre les deux ensembles.

  12. L’Intersection : Exemple [2] SELECT Client FROM Commander A INNER JOIN PRODUITS B ON A.Produit = B.Produit WHERE Couleur is null INTERSECT SELECT Client FROM Commander A INNER JOIN PRODUITS B ON A.Produit = B.Produit WHERE Couleur = ‘rouge’ Requête A Requête B

  13. L’Intersection : Résultats Requête A Requête B INTERSECT

  14. La Différence SELECT Colonne1, Colonne2, …, ColonneN FROM [Table 1] WHERE [Condition1] MINUS SELECT Colonne1’, Colonne2’, …, ColonneN’ FROM [Table 1’] WHERE [Condition2]

  15. La Différence : Exemple • Question • 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 CLIENTS MINUS SELECT DISTINCT Client FROM Commander

  16. Le qualificateur ALL Le 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 : >, <, >=, <=, <>.

  17. Le qualificateur ALL : Exemple • Question • Trouver les libellés des produits moins chers que tous les produits de couleur « rouge ». • Réponse • Construire 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é.

  18. Le qualificateur ALL : Résultat SELECT Libelle, Prix FROM PRODUITS WHERE Couleur != ‘rouge’ AND Prix < ALL ( SELECT Prix FROM PRODUITS WHERE Couleur = ‘rouge’ )

  19. Le qualificateur ANY Il 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 : >, <, >=, <=, <>.

  20. Le qualificateur ANY : Exemple • Question • Trouver les libellés des produits plus chers qu’un produit de couleur « rouge ». • Réponse • Construire 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é.

  21. Le qualificateur ANY : Résultat SELECT Libelle, Prix FROM PRODUITS WHERE Couleur != ‘rouge’ AND Prix > ANY ( SELECT Prix FROM PRODUITS WHERE Couleur = ‘rouge’ )

  22. L’opérateur EXISTS Permet de savoir si un « SELECT » produit au moins une ligne « VRAI » ou ne produit aucune ligne « FAUX ». SELECT Colonne1, Colonne2, …, ColonneN FROM [Table1] WHEREEXISTS( SELECT Colonne1 FROM [Table2] WHERE [Condition2] )

  23. L’opérateur EXISTS : Exemple • Question • Trouver les numéros et les noms des clients ayant commandé au moins un produit • Réponse • Ils s’agit des clients pour lesquels il existe au moins un enregistrement dans la table « Commander ».

  24. L’opérateur EXISTS : Résultat SELECT Client, Nom FROM CLIENTS WHERE EXISTS ( SELECT Client FROM Commander ) Le client numéro 3 n’a passé aucune commande.

More Related