Vous êtes sur la page 1sur 6

THEME : Les fonctions et les données temporaires en SQL

INTRODUCTION

Le SQL et le MySQL possèdent de nombreuses fonctions prêtes à l’emploi


qui vont nous permettre de retourner certaines données en particulier ou d’effectuer
des manipulations sur les données récupérées depuis notre base de données.
Parmi toutes ces fonctions, deux grands groupes de fonctions se dessinent : les
fonctions d’agrégation et les fonctions scalaires.

C'est quoi une fonction en SQL ?

Les fonctions SQL permettent d'effectuer des requêtes plus élaborées, par exemple
adaptant les résultats pour qu'une chaîne soit affichée en majuscule ou bien pour enregistrer une
chaîne avec la date actuelle.

Comment utiliser une fonction en SQL ?

Une fonction scalaire SQL définie par l'utilisateur intègre une clause SELECT SQL qui
s'exécute lorsque la fonction est appelée et renvoie une valeur unique. La commande CREATE
FUNCTION définit les paramètres suivants : (Facultatif) Arguments d'entrée. Chaque
argument doit disposer d'un type de données.

C'est quoi une fonction scalaire ?


Une fonction scalaire est une fonction qui renvoie une valeur par appel. Dans la plupart des
cas, vous pouvez penser que ceci renvoie une valeur par ligne. Cela contraste avec Fonctions
d'agrégation, qui renvoie une valeur par groupe de lignes. Effectuer des opérations au niveau des
bits sur des expressions.

Il est possible d’utiliser des fonctions scalaires pour convertir une valeur d'un type de
données dans un autre et traiter les valeurs de date/heure. Vous pouvez également les utiliser pour
manipuler des parties de chaînes de caractères ou graphiques et éviter les valeurs nul.
Les fonctions scalaires

Les fonctions scalaires sont un sous type de UDF (« User Defined Functions » ou «
Fonctions définies par l’Utilisateur » en français) en ce sens où ces fonctions sont basées sur les
données envoyées par l’utilisateur.

Nous allons découvrir les fonctions scalaires suivantes :

 Les fonctions lcase() et ucase() ;


 La fonction length() ;
 La fonction round() ;
 La fonction now().

Les fonctions lcase() et ucase()


Les fonctions SQL lcase() et ucase() servent respectivement à convertir une chaine de caractères en
minuscules ou en majuscules.

Ces fonctions peuvent être utiles pour pré-formater des résultats qu’on souhaite manipuler par la
suite.

La fonction length()
La fonction MySQL length() permet de calculer la longueur d’une chaîne de caractères.

Attention : notez que cette fonction se base sur le nombre de Bytes ou d’octets (1 Byte = 8 bits = 1
octet) pour le calcul et va bien retourner une taille en Bytes. Ainsi, un caractère multi-Bytes
(comme les caractères accentués par exemple) est compté comme plus de 1 Byte.

La fonction round()
La fonction SQL round() va nous permettre d’arrondir une valeur en choisissant le nombre de
décimales voulues.
Cette fonction va donc prendre en paramètres une valeur à arrondir (ou le nom d’une colonne) ainsi
que le nombre de décimales auxquelles on souhaite arrondir la ou les valeurs.

La fonction now()
La fonction SQL now() est utilisée pour retourner la date courante.

Cette fonction va être utile pour contextualiser une sélection de données en datant la date d’export
par exemple.

Les fonctions d’agrégation et les critères de


sélection
Il existe deux autres critères de sélection et de tri très courants dont je n’ai pas encore parlé jusqu’à
présent pour la simple et bonne raison qu’on va principalement les utiliser avec les fonctions
d’agrégation et qui sont GROUP BY et HAVING.

L’instruction GROUP BY
L’instruction SQL GROUP BY va généralement être utilisée avec les fonctions d’agrégation et en
combinaison avec ORDER BY. Cette instruction va nous permettre de grouper les résultats
renvoyés selon une colonne.

En pratique, cette instruction va être utile pour regrouper des clients selon leur pays par exemple,
ou encore selon le montant de leurs commandes, etc.

Dans notre table « users », nous allons ainsi par exemple pouvoir regrouper nos utilisateurs selon
leur prénom et afficher le nombre de fois où un même prénom a été trouvé en utilisant la
fonction count ().

Ici, on commence par compter combien d’id (et donc combien d’entrées) nous avons dans la table
avec COUNT(id). On regroupe ensuite les résultats sélectionnés selon la valeur dans la colonne « prenom
» de notre table. Finalement, on organise ces résultats selon le nombre de fois où un même prénom a été
trouvé du plus grand nombre de fois au plus petit nombre de fois.
L’ordre des instructions est très important en SQL : si vous indiquez les différentes instructions dans
n’importe quel ordre, vous avez de grandes chances pour que votre requête ne fonctionne pas du tout !

La clause SQL HAVING


La clause SQL HAVING remplace la clause WHERE dans le cas d’une utilisation avec les
fonctions d’agrégation.

En effet, on ne peut tout simplement pas utiliser de clause WHERE avec des fonctions d’agrégation
car la clause WHERE fonctionne avec les données de chaque ligne mais pas avec des données
agrégées.

Nous allons par exemple pouvoir sélectionner uniquement les prénoms qui ne sont présents qu’une
seule fois dans notre table et organiser le tout selon l’alphabet.

Les fonctions d’agrégation


La fonction d'agrégation SQL est utilisée pour effectuer les calculs sur plusieurs lignes
d'une seule colonne d'une table. Elle retourne une valeur unique. Elle est également utilisée pour
résumer les données.

Les fonctions d’agrégation vont être utilisées pour réaliser des opérations à partir de différentes
valeurs dans une colonne et ne vont retourner qu’une valeur. Ces fonctions « agrègent » donc
plusieurs valeurs d’entrée en une valeur de sortie.

Dans cette leçon, nous allons étudier les fonctions d’agrégation suivantes :

 Les fonctions min() et max() ;


 La fonction count() ;
 La fonction avg() ;
 La fonction sum().
Les fonctions min() et max()
La fonction SQL min() va retourner la valeur la plus petite dans une colonne sélectionnée.

La fonction SQL max() va elle retourner la valeur la plus grande dans une colonne sélectionnée.

Nous pouvons utiliser ces fonctions pour voir par exemple quelle est la plus grosse commande
passée sur notre site, quel est l’utilisateur le plus âgé, etc.
Notez que ces fonctions vont également fonctionner sur des chaines de caractères. Dans ce cas, le
« a » sera considéré plus petit que « b » et etc.

Pour tester les différentes fonctions de cette partie, nous allons à nouveau utiliser notre table « users
» dans laquelle nous allons ajouter une colonne « age » et également modifier l’âge de nos
utilisateurs déjà inscrits.

Vous pouvez faire cela directement dans phpMyAdmin en ajoutant une colonne dans notre table à
partir de l’onglet « Structure » puis ne modifiant la valeur de la colonne de chaque ligne.

Voici ce qu’on obtient :

Nous pouvons ensuite par exemple sélectionner le plus petit âge de notre colonne avec la
fonction min(). Attention, cette fonction ne va retourner que la valeur la plus petite de la colonne
et non pas afficher toutes les informations relatives à l’entrée possédant cette valeur.

Quelle est la différence entre une fonction scalaire et une fonction d'agrégation ?
Une fonction d'agrégation prend zéro, une ou plusieurs lignes en entrée et génère
une sortie unique. En revanche, les fonctions scalaires prennent une ligne
en entrée et produisent une ligne (une seule valeur) en sortie.

Données temporaires dans MYSQL


C'est quoi une table temporaire ?
Une table temporaire se construit à partir d'une requête et ré-enregistre des données
existantes à un instant T. Cela permet d'isoler une portion de données, il peut être utile de
l'utiliser pour créer un sous-ensemble d'une autre table plus léger afin de soulager le serveur.
NB : Les tables temporaires SQL Server permettent de stocker temporairement des données
Les TSDBs (TimeSeries Databases) ne sont pas nouvelles. Elles étaient tout d’abord
utilisées pour stocker et gérer des données financières. Par la suite, l’IoT a grandement influencé
leur utilisation. En effet, d’ici 2025, 80 zettaoctets de données seront générées par une utilisation
courante d’environ 40 milliards d’objets munis de capteurs, récoltant de la donnée (smartphone,
GPS, capteurs thermiques, terminal de paiements etc …)
D’après IDC (International Data Corporation). C’est dans ce contexte que l’utilisation des
TSDBs prend tout son sens. Celles-ci ont été optimisées pour prendre en charge ces gros volumes
de données.

Les TSDBs les plus populaires en 2020 sont les suivantes :

Vous aimerez peut-être aussi