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 :
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
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
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.).
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 |
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.
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.
Run SQLSELECT MIN(Amount) AS Min1
FROM Sumproduct
Run SQLSELECT MAX(Amount) AS Max1
FROM Sumproduct
Run SQLSELECT AVG(Amount) AS Avg1
FROM Sumproduct