I S E T AG M.GUIKO ARSENE BASE DE DONNEES Ip - 1 - Chapitre 5 LE LANGAGE DE MAN

I S E T AG M.GUIKO ARSENE BASE DE DONNEES Ip - 1 - Chapitre 5 LE LANGAGE DE MANIPULATION DE DONNEES SQL O b j ec t i f s Général Spécifiques L'étudiant apprendra la notion requêtes Définir sql,lmd,lpd,ldd Métriser les syntaxes sql Notion sur les predicats Travaux diriges à la fin du chapitre 1. Introduction Structured Query Langage (Langage structuré de requêtes) est un langage de manipulation de données (LMD) relationnelles. Ce langage permet de spécifier les données à sélectionner ou à mettre à jour à propriétés de valeurs, sans dire comment retrouver les données. Les opérations utilisées sont en général celles des langages dits assertionnels. Plusieurs langages permettent de manipuler les bases de données relationnelles ont été proposés, en particulier Quel, QBE et SQL. Aujourd’hui, le langage SQL est normalisé et est le standard d’accès aux bases de données relationnelles. Ce langage a pour objectif d’être facilement utilisé par le programmeur, ses fonctionnalités sont plus larges que celles du langage algébrique, il comprend les fonctions : Description Recherche Mise à jour Confidentialité et cohérence. Nous allons étudier dans ce cours la partie Recherche (ou sélection) du LMD SQL. 2. RECHERCHE C’est la fonction d’interrogation faisant intervenir l’opération de sélection. Une requête de recherche SQL utilise une ou plusieurs relations en entrée pour afficher le résultat sous forme d’une relation en sortie. 2.1. Format général d’une requête Rappelons qu’une projection effectue l’extraction de colonnes (attributs) spécifiés d’une relation, puis élimine les attributs en double. SQL n’élimine pas les doubles à moins que ceci soit demandé par le mot clé DISTINCT. La projection sous SQL rend possible l’utilisation des fonctions de calculs sur les colonnes (attributs) extraites. Les fonctions de calculs utilisées sont en particulier les fonctions arithmétiques. Syntaxe : SELECT [ALL / DISTINCT] { <EXPRESSION DE VALEURS> / * } FROM <LISTE_RELATION > [ WHERE <CONDITIONS>] ; Une expression de valeurs peut être la liste des attributs ou des expressions arithmétiques. * indique tous les attributs. Exemple : Soit la relation Voiture (N I MM , marque, modèle, prix, couleur, achat) Un extrait de la table voiture est le suivant : La requête SQL pour afficher la liste des voitures : SELECT * FROM VOITURE ; Cette requête affiche à l’écran les 9 tuples de la table voiture. Il est possible aussi de mentionner certains attributs à afficher et de préciser les tuples vérifiant une condition. Exemple La requête SQL pour afficher le prix et le modèle des voitures de marque « Renault » : SELECT PRIX, MODÈLE` FROM VOITURE` WHERE MARQUE = "RENAULT" ; Le résultat affiché à l’écran de cette requête est le suivant : Une condition peut être simple ou composée. Une condition composée utilise les opérateurs logiques And, Or et/ou Not. TD fin du chapitre Exemple La requête SQL pour afficher le modèle, le prix et le prix TTC des voitures de marque « Renault » de prix HT inférieur ou égale à 25 millions. SELECT MODÈLE , PRIX, PRIX * 1.2 AS TTC FROM VOITURE WHERE (MARQUE = ‘’RENAULT’’) AND (PRIX <= 25); Le résultat affiché à l’écran de cette requête est le suivant : Dans la clause Select de cette requête affiche une expression calculée (prix * 1,2) , elle est nommée TTC en utilisant « As ». La condition de la clause Where est composée, l’utilisation de parenthèses est recommandée. 2.2. La clause distinct Exemple : Pour afficher les marques des voitures, nous pouvons écrire la requête SQL suivante : TD fin du chapitre SELECT MARQUE FROM VOITURE; Ceci est équivalent à la requête suivante : Select ALL (Marque) from voiture ; ALL est pris par défaut Le résultat affiché à l’écran est le suivant : Pour éliminer les doublons au niveau de l’affichage, nous utilisons la clause distinct. La requête SQL correspondante est : SELECT DISTINCT ( MARQUE ) FROM VOITURE; Le résultat affiché est donc : TD fin du chapitre Remarque : Distinct s’applique sur le tuple entier de la table voiture. Exemple : Pour afficher les différentes marques et modèles des voitures La requête SQL est : SELECT DISTINCT (MARQUE) , MODÈLE FROM VOITURE; Le résultat affiché est le suivant : Remarque : Les doublons sur la marque ne sont pas éliminés si le modèle est différent. 2.3. Trier un résultat Pour donner un ordre au tuples affichés, la clause order by peut être utilisée. Syntaxe : Order by attribut1 [asc/dec], attribut2 [asc/dec],… L’affichage est effectué selon un ordre défini pour le premier attribut (attribut1), le second attribut (attribut2) est trié par rapport aux valeurs identiques du premier attribut,… Asc : ordre croissant pris par défaut Desc : ordre décroissant. Exemple : Pour afficher les NIMM, marque et modèle des voitures dans l’ordre de la date d’achat. La requête SQL est la suivante : SELECT NIMM, MARQUE , MODÈLE , ACHAT FROM VOITURE ORDER BY ACHAT; Le résultat affiché de la requête : Exemple : Pour afficher les marque, modèle , couleur et prix des voitures par ordre croissant de marque et décroissant de prix. La requête SQL est la suivante : SELECT MARQUE , MODÈLE , COULEUR, PRIX FROM VOITURE ORDER BY MARQUE , PRIX DESC; Le résultat affiché de la requête : 2.4. Fonctions agrégats Ce sont les fonctions d’évaluation d’ensembles. AVG(n) : Donne la moyenne des valeurs de n Count(n) : Donne le nombre de tuples Max(n) : Donne la plus grande valeur de n Min(n) : Donne la plus petite valeur de n Sum(n) : Donne la somme des valeurs de n Count(*) : Donne le nombre de tuples qui satisfont la condition. Attention : une fonction agrégat est utilisée dans un select (Jamais dans un Where) Exemple : Pour afficher le nombre de voitures de marque « Peugeot ». La requête SQL est la suivante : SELECT COUNT(*) AS NOMBREPEUGEOT FROM VOITURE WHERE MARQUE = "PEUGEOT"; Le résultat affiché de la requête : Exemple : Pour afficher le prix minimal et le prix maximal des voitures. La requête SQL est la suivante : SELECT MIN(PRIX) AS PMIN, MAX(PRIX)AS PMAX FROM VOITURE; Le résultat affiché de la requête : 2.5. Les sous relations Syntaxe: Group by <liste_attributs> [Having <condition>] ; Group by partitionne la relation en sous relations tel que chacune ait pour l'attribut indiqué par group by la même valeur. Having a la même fonction que where, ne garde que les sous relations qui satisfont la condition. Where est appliqué à la relation entière avant la partition (création des sous relations) Having est appliqué à chaque sous relation, après donc la partition. Exemple : Pour afficher le nombre de voitures de chaque marque. La requête SQL est la suivante : SELECT MARQUE, COUNT(*)AS NOMBRE FROM VOITURE GROUP BY MARQUE; Le résultat affiché de la requête : Pour exécuter cette requête, le système crée des sous relations pour chaque marque, une sous relation a pour l’attribut marque la même valeur et ensuite, dans chaque sous relations, il compte le nombre de tuples cad le nombre de voitures d’une même marque. Remarque : un attribut mentionné dans la clause « group by » doit exister dans la clause « Select ». Exemple : Modifier la requête précédente pour afficher le nombre de voitures de chaque marque ayant un prix minimale inférieur à 20 millions La requête SQL est la suivante : SELECT MARQUE, COUNT(*)AS NOMBRE FROM VOITURE GROUP BY MARQUE HAVING MIN(PRIX) < 20; Le résultat affiché de la requête : Remarque : il est possible d’utiliser une fonction agrégat dans la clause « Having ». 2.6. Les requêtes multi-relations (jointures) Une requête multi_relation peut s’écrire sous deux formes :  Forme procédurale (FP) Des requêtes imbriquées utilisant l’opérateur in. Dans chaque requête, une seule table est utilisée à la fois.  Forme relationnelle (FR) Une seule requête. Il est possible d’utiliser plusieurs tables dans la clause « From ». Dans le cas ou nous avons une liste de relations, il peut être nécessaire de préciser à quelle relation appartient chacun des attributs. Cette ambiguité est levée de deux manières : utilisation de variables de désignation ou des noms de relations, Exemple : soit le schéma relationnel suivant : Voiture( N I M , marque, modèle , prix , option) Client(C I N , nom , ville , telephone) Appartenir ( C I N , N I M ) Pour désigner l’attribut NIM de la relation Voiture, on peut écrire Voiture.NIM ou bien utiliser une variable de désignation V pour voiture par exemple et écrire V.NIM. Exemple : donner le nom des clients ayant des voitures de modèle 307 et de marque Peugeot. Forme Procédurale : Select nom From client Where cin in (select cin From Appartenir Where NIM in (select NIM From voiture Where (modele=“307”) and (marque=“Peugeot”)); Forme relationnelle : Une seule expression de sélection ( 1 seul SELECT) Select nom From client , Appartenir , Voiture Where (client.cin = Appartenir.cin) and (Appartenir.NIM = Voiture.NIM) and (modele=“307”) and (marque=“Peugeot” ); Ou bien, en utilisant des variables de désignation : Select nom From client C uploads/Marketing/ chapitre-5 2 .pdf

  • 43
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Mar 04, 2022
  • Catégorie Marketing
  • Langue French
  • Taille du fichier 0.6156MB