Initiation à SQL

Utilisation de fonctions

Vous trouverez ci-après une présentation rapide des fonctions utilisées dans les exemples du présent document. Une fonction de base de données est une relation entre un ensemble de valeurs fournies en entrée et une valeur résultat.

Les fonctions peuvent être intégrées ou définies par l'utilisateur. Vous trouverez dans DB2 Universal Database de nombreuses fonctions intégrées et définies par l'utilisateur et déjà installées.

Les fonctions intégrées se trouvent dans le schéma SYSIBM et les fonctions définies par l'utilisateur et déjà installées figurent dans le schéma SYSFUN. SYSIBM et SYSFUN sont des schémas réservés.

Les fonctions intégrées et définies par l'utilisateur et déjà installées ne suffisent pas à remplir tous les besoins de l'utilisateur. C'est pourquoi les développeurs ont quelquefois besoin d'ajouter leur propre ensemble de fonctions, spécifique de leurs applications. Il est possible de le faire à partir des fonctions définies par l'utilisateur, qui élargissent la portée de DB2 Universal Database par l'inclusion, par exemple, de fonctions scientifiques ou commerciales personnalisées. Vous trouverez plus de détails sur ce sujet à la section Fonctions définies par l'utilisateur (UDF).

Fonctions de colonne

Les fonctions de colonne donnent un résultat unique à partir d'un ensemble de valeurs présentes dans une colonne. Vous trouverez ci-dessous quelques exemples de fonctions de colonne. Le document SQL Reference contient la liste complète de ces fonctions de colonne.

AVG
Renvoie la somme des valeurs d'un ensemble, divisée par le nombre de valeurs de l'ensemble.

COUNT
Renvoie le nombre de lignes ou de valeurs, dans un ensemble de lignes ou de valeurs.

MAX
Renvoie la valeur la plus élevée d'un ensemble de valeurs.

MIN
Renvoie la valeur la plus basse d'un ensemble de valeurs.

L'instruction suivante sélectionne le salaire maximum de la table STAFF :

     SELECT MAX(SALARY)
        FROM STAFF

Cette instruction renvoie de la table STAFF la valeur 22959,20.

L'exemple suivant sélectionne les noms et les salaires des employés qui ont un revenu plus élevé que la moyenne des revenus constatés dans la société et un temps de présence inférieur au temps de présence moyen.

     SELECT NAME, SALARY
        FROM STAFF
        WHERE SALARY > (SELECT AVG(SALARY) FROM STAFF)
        AND YEARS < (SELECT AVG(YEARS) FROM STAFF)

Cette instruction donne le résultat suivant :

      NAME      SALARY   
     --------- ---------
     Marenghi   17506.75
     Daniels    19260.25
     Gonzales   16858.20

Dans la clause WHERE de l'exemple ci-dessus, la fonction de colonne est déclarée dans une sous-requête au lieu d'être implémentée directement (par exemple, WHERE SALARY > AVG(SALARY)). Les fonctions de colonne ne peuvent pas être déclarées dans la clause WHERE. Ceci est dû à l'ordre des opérations. On peut considérer que la clause WHERE est évaluée avant la clause SELECT. Par conséquent, lors de l'évaluation de la clause WHERE, la fonction de colonne n'a pas accès à l'ensemble de valeurs. Cet ensemble est sélectionné ultérieurement, avec la clause SELECT.

L'élément DISTINCT, utilisé dans l'argument d'une fonction de colonne, peut servir à éliminer les valeurs en double avant d'appliquer la fonction. Ainsi, COUNT(DISTINCT WORKDEPT) calcule le nombre de services différents.

Fonctions scalaires

Une fonction scalaire effectue une opération sur une valeur, pour renvoyer une autre valeur. Voici quelques exemples de fonctions scalaires fournies par DB2 Universal Database.

ABS
Renvoie la valeur absolue d'un nombre.

HEX
Renvoie la représentation hexadécimale d'une valeur.

LENGTH
Renvoie le nombre d'octets d'un argument (dans le cas d'une chaîne graphique, renvoie le nombre de caractères double octet).

YEAR
Extrait la partie année d'une valeur indiquant la date et/ou l'heure.

Le document SQL Reference contient une liste détaillée des fonctions scalaires, accompagnée de leur description.

L'instruction suivante renvoie les noms des services de la table ORG ainsi que la longueur de chacun des noms :

     SELECT DEPTNAME, LENGTH(DEPTNAME)
        FROM ORG

Cette instruction donne le résultat suivant :

     DEPTNAME       2          
     -------------- -----------
     Head Office             11
     New England             11
     Mid Atlantic            12
     South Atlantic          14
     Great Lakes             11
     Plains                   6
     Pacific                  7
     Mountain                 8

Remarque : Comme la clause AS n'a pas été utilisée pour donner un nom significatif à LENGTH(DEPTNAME), un numéro généré par le système apparaît en titre de la deuxième colonne.

Fonctions de table

Les fonctions de table renvoient les colonnes d'une table qui ressemblent à la table créée par une instruction CREATE TABLE.

Une fonction de table peut être utilisée uniquement dans la clause FROM d'une instruction SQL.

La seule fonction de table prise en charge dans DB2 Universal Database est SQLCACHE_SNAPSHOT.

SQLCACHE_SNAPSHOT
Renvoie les résultats d'une image instantanée de la mémoire cache d'une instruction SQL dynamique en tant que table.


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]