TOP

SQL-Leçon 7. Fonctions de traitement des données

Comme dans la plupart des langages de programmation, SQL possède des fonctions de traitement des données. Il convient de noter que, contrairement aux instructions SQL, les fonctions ne sont pas standardisées pour tous les types de SGBD, c'est-à-dire que pour effectuer les mêmes opérations sur les données, différents SGBD ont leurs propres noms de fonction. Cela signifie que le code de requête écrit dans un SGBD peut ne pas fonctionner dans un autre, et cela devra être pris en compte à l'avenir. Cela s'applique principalement aux fonctions de traitement des valeurs de texte, de conversion des types de données et de manipulation des dates.


La plupart des SGBD prennent en charge un ensemble standard de types de fonctions, à savoir :

  • Fonctions de texte utilisées pour le traitement du texte (extraire une partie des caractères du texte, déterminer la longueur du texte, convertir les caractères en majuscules ou minuscules...) ;
  • Fonctions numériques. Ils sont utilisés pour effectuer des opérations mathématiques sur des valeurs numériques ;
  • Fonctions de date et d'heure (des manipulations de date et d'heure sont effectuées, la période entre les dates est calculée, l'exactitude des dates est vérifiée, etc.) ;
  • Fonctions statistiques (pour calcul de valeurs maximales/minimales, valeurs moyennes, calcul de quantité et de somme...) ;
  • Fonctions système (fournissent divers types d'informations de service sur le SGBD, l'utilisateur, etc.).
  • 1. Fonctions SQL pour le traitement de texte

    L'implémentation SQL dans MS Access a les fonctions suivantes pour le traitement de texte :

    Fonction Description
    Left() Sélectionne les caractères du texte à gauche
    Right() Sélectionne les caractères dans le texte de droite
    Mid() Sélectionne les caractères au milieu du texte
    UCase() Convertit les caractères en majuscules
    LCase() Convertit les caractères en minuscules
    LTrim() Supprime tous les caractères vides à gauche du texte
    RTrim() Supprime tous les caractères vides à droite du texte
    Trim() Supprime tous les caractères vides des deux côtés du texte

    Convertissons les noms de produits en majuscules à l'aide de la fonction UCase() :

    Run SQLSELECT Product, UCase(Product) AS Product_UCase 
    FROM Sumproduct
    

    Soulignons les trois premiers caractères du texte à l'aide de la fonction LEFT() :

    Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT 
    FROM Sumproduct
    

    2. Fonctions SQL pour traiter les nombres

    Les fonctions de traitement des nombres sont conçues pour effectuer des opérations mathématiques sur des données numériques. Ces fonctions sont conçues pour les calculs algébriques et géométriques, elles sont donc beaucoup moins souvent utilisées que les fonctions de traitement de date et d'heure. Cependant, les fonctions numériques sont les plus standardisées dans toutes les versions de SQL. Regardons la liste des fonctions numériques :

    Fonction Description
    SQR() Renvoie la racine carrée du nombre spécifié
    ABS() Renvoie la valeur absolue d'un nombre
    EXP() Renvoie l'exposant du nombre spécifié
    SIN() Renvoie le sinus de l'angle spécifié
    COS() Renvoie le cosinus de l'angle spécifié
    TAN() Renvoie la tangente de l'angle spécifié

    Nous n'avons répertorié que quelques-unes des principales fonctionnalités, mais vous pouvez toujours vous référer à la documentation de votre SGBD pour une liste complète des fonctionnalités prises en charge avec des descriptions détaillées.

    Par exemple, écrivons une requête pour obtenir la racine carrée des nombres de la colonne Montant à l'aide de la fonction SQR() :

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    MySQL utilise la fonction SQRT() pour obtenir la racine carrée d'un nombre.

    3. Fonctions SQL pour le traitement de la date et de l'heure

    Les fonctions de manipulation de date et d'heure font partie des fonctions SQL les plus importantes et les plus fréquemment utilisées. Dans les bases de données, les valeurs de date et d'heure sont stockées dans un format spécial, elles ne peuvent donc pas être utilisées directement sans traitement supplémentaire. Chaque SGBD possède son propre ensemble de fonctions de traitement des dates, ce qui, malheureusement, ne permet pas de les transférer vers d'autres plates-formes et implémentations SQL.

    Liste de quelques fonctions de gestion de la date et de l'heure dans MS Access :

    Fonction Description
    DatePart() Renvoie une partie d'une date : année, trimestre, mois, semaine, jour, heure, minute, seconde.
    Year(), Month() Renvoie respectivement l'année et le mois
    Hour(), Minute(), Second() Renvoie l'heure, les minutes et les secondes de la date spécifiée
    WeekdayName() Renvoie le nom du jour de la semaine

    Regardons un exemple du fonctionnement de la fonction DatePart() :

    SELECT Date1, DatePart("m", Date1) AS Month1 
    FROM Sumproduct
    

    La fonction DatePart() possède un paramètre supplémentaire qui nous permet d'afficher la partie requise de la date. Dans l'exemple, nous avons utilisé la valeur du paramètre "m", qui affiche le numéro du mois (de la même manière, on peut afficher l'année - "aaaa", le trimestre - "q", le jour - "d", la semaine - "w", l'heure - "h" , les minutes - "n", les secondes - "s", etc.).

    4. Fonctions statistiques SQL

    Les fonctions statistiques nous aident à préparer les données sans les échantillonner. Les requêtes SQL avec ces fonctions sont souvent utilisées pour analyser et générer divers rapports. Un exemple de telles sélections peut être : déterminer le nombre de lignes dans un tableau, obtenir la somme des valeurs pour un certain champ, rechercher la valeur la plus grande/la plus petite ou moyenne dans la colonne spécifiée du tableau. Notons également que les fonctions statistiques sont prises en charge par tous les SGBD sans aucune modification écrite particulière.

    Liste des fonctions statistiques dans le SGBD Access :

    Fonction Description
    COUNT() Renvoie le nombre de lignes dans un tableau ou une colonne
    SUM() Renvoie la somme des valeurs d'une colonne
    MIN() Renvoie la plus petite valeur d'une colonne
    MAX() Renvoie la plus grande valeur d'une colonne
    AVG() Renvoie la valeur moyenne dans une colonne

    4.1 Exemples d'utilisation de la fonction COUNT()

    Renvoie le nombre de toutes les lignes du tableau :

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    Renvoie le nombre de lignes non vides dans le champ Produit :

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    Nous avons intentionnellement supprimé une valeur dans la colonne Produit pour afficher la différence de performances entre les deux requêtes.

    4.2 Exemples d'utilisation de la fonction SUM()

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    Avec cette demande, nous avons affiché le montant total des marchandises vendues au mois d'avril.

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

    Comme vous pouvez le constater, dans les fonctions statistiques, nous pouvons également effectuer des calculs sur plusieurs colonnes à l'aide d'opérateurs mathématiques standards.

    4.3 Exemple d'utilisation de la fonction MIN()

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 Exemple d'utilisation de la fonction MAX()

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 Exemple d'utilisation de la fonction AVG()

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct