FONCTIONS D’AGRÉGATION
En SQL, les fonctions d’agrégation permettent de réaliser des opérations arithmétiques et
statistiques au sein d'une requête. Les principales fonctions sont les suivantes :
COUNT () : pour compter le nombre d’enregistrements d'une table ou d'une colonne
distincte ;
AVG () : pour calculer la moyenne sur un ensemble d’enregistrements ;
SUM () : pour calculer la somme sur un ensemble d’enregistrements ;
MAX () : pour récupérer la valeur maximum d’une colonne sur un ensemble
d’enregistrements ;
MIN () : pour récupérer la valeur minimum de la même manière que la fonction MAX
().
UTILISER UNE FONCTION
Pour utiliser une fonction, la syntaxe est toujours équivalente à celle décrite ci-dessous. Il faut
préciser la colonne de son choix entre les parenthèses de la fonction.
Voici la syntaxe :
SELECT fonctionXYZ(colonne) FROM une_table;
Voici la table client qu’on va manipuler.
COUNT ()
En SQL, la fonction d’agrégation COUNT () permet de compter le nombre
d’enregistrements dans une table, ce qui s'avère très pratique dans de nombreux cas. On peut
notamment citer le nombre de commandes d'un site e-commerce, le nombre d'articles d'un blog,
ou encore le nombre de produits d'un catalogue.
Pour compter le nombre d'enregistrements sur une colonne en particulier, il suffit de reprendre
la syntaxe précédente. Tout de suite un exemple avec la table clients.
Pour compter le nombre total de clients dans la table, il suffit d’utiliser le joker dans la
fonction COUNT () sur toute la table. La syntaxe est donc la suivante : COUNT (*).
AVG ()
En SQL, la fonction d’agrégation AVG () permet de calculer une valeur moyenne sur un
ensemble d’enregistrements de type numérique et qui ne possèdent pas la valeur NULL. Les
cas d'utilisation ne manquent pas. En utilisant la table clients décrite précédemment, on peut
envisager de calculer le nombre moyen de commandes par clients, si celui-ci a commandé au
moins une fois.
SUM ()
En SQL, la fonction d’agrégation SUM () permet de calculer la somme sur un ensemble
d’enregistrements de type numérique et qui ne possèdent pas la valeur NULL. En utilisant la
table clients décrite précédemment, on peut envisager compter le nombre de commandes dans
la table clients.
SELECT SUM(commandes) AS somme FROM clients;
MAX () ET MIN ()
En SQL, les fonctions d’agrégation MAX () et MIN () permettent de sélectionner la valeur
respectivement maximale et minimale dans un ensemble d’enregistrements. Les
valeurs NULL sont écartées. En utilisant la table clients décrite précédemment, on peut
envisager rechercher le montant maximal et minimal pour un client.
Exemple montant maximal
Exemple montant minimal
OPÉRATEUR SQL BETWEEN
En SQL, l'opérateur BETWEEN permet de sélectionner des enregistrements en fonction d’un
intervalle. Cet opérateur s'utilise avec la commande WHERE. L'intervalle peut être constitué
de chaînes de caractères, de nombres ou de dates. L’utilisation la plus basique de cette
commande s’effectue de la manière suivante :
SELECT une_colonne FROM une_table WHERE une_colonne BETWEEN "valeur_1"
AND "valeur_2";
Cette requête SQL va donc sélectionner grâce à la commande SELECT les enregistrements
provenant de la table nommée une_table et dont la valeur de la colonne une_colonne est
comprise entre valeur_1 et valeur_2. Avec le SGBD MySQL, les intervalles avec
l'opérateur BETWEEN sont inclusifs.
Afin de mettre en évidence l'utilisation de l'opérateur BETWEEN et de comprendre rapidement
comment cette dernière fonctionne, voyons sans plus attendre un exemple simple. Pour cet
exemple, nous utiliserons la table commandes qui contient les colonnes et données suivantes.
Reprenons notre première requête SQL avec l'opérateur BETWEEN et complétons
correctement cette dernière avec la table commandes. Nous souhaitons sélectionner
uniquement les commandes entre le 04 et le 06 février 2023. Pour effectuer cette opération, la
requête est la suivante :
OPÉRATEURS SQL IN ET NOT IN
En SQL, l'opérateur IN permet de sélectionner des enregistrements si la valeur d'une
colonne est comprise dans une liste de valeurs. C'est la commande idéale pour vérifier si une
colonne possède une valeur ou une autre. La commande IN permet d'éviter d'avoir à recourir à
de multiples OR. Cet opérateur s'utilise avec la commande WHERE. L’utilisation la plus
basique de cette commande s’effectue de la manière suivante :
SELECT une_colonne FROM une_table WHERE une_colonne IN ("valeur_1",
"valeur_2", "valeur_3");
Cette requête SQL va donc sélectionner, grâce à la commande IN, les enregistrements
provenant de la table nommée une_table et dont la valeur de la
colonne une_colonne est valeur_1 ou valeur_2 ou valeur_3.
Attention :
Il n'y a pas de limite de valeurs pour la commande IN. On peut donc ajouter autant de valeurs
que nécessaire entre les parenthèses. Cependant, il est tout de même nécessaire d'ajouter au
moins une valeur.
Afin de mettre en évidence l'utilisation de l'opérateur IN et de comprendre rapidement comment
ce dernier fonctionne, voyons sans plus attendre un exemple simple. Nous comparerons
également la solution avec la commande IN et OR. Pour cet exemple, nous utiliserons la
table commandes qui contient les colonnes et données suivantes :
Reprenons notre première requête SQL avec l'opérateur IN et complétons correctement cette
dernière avec la table commandes. Nous souhaitons sélectionner les commandes avec les
identifiants 3, 4 ou 5. Pour effectuer cette opération, la requête est la suivante :
Maintenant que nous avons la solution avec la commande IN, nous pouvons comparer avec
l'utilisation frénétique de la commande OR. Cette solution produit le même résultat.
Dans certains cas de figures, nous souhaitons obtenir exactement l'inverse de ce que propose
l'opérateur IN. En SQL, l'opérateur NOT IN permet de sélectionner des enregistrements si la
valeur d'une colonne n'est pas comprise dans une liste de valeurs.
Reprenons notre première requête SQL avec l'opérateur IN et modifions cette dernière pour
utiliser l'opérateur NOT IN. Nous souhaitons sélectionner les commandes qui n'ont pas les
identifiants 1 ou 5. Pour effectuer cette opération, la requête est la suivante :
OPÉRATEUR SQL LIKE
En SQL, l'opérateur LIKE permet de faire une recherche suivant un modèle sur les valeurs
d'une colonne. Il existe plusieurs modèles de recherches (pattern en anglais) que nous
détaillerons par la suite. Une nouvelle fois, cet opérateur s'utilise avec la commande WHERE.
C'est un opérateur extrêmement puissant qui offre de nombreuses possibilités. L’utilisation la
plus basique de ce dernier s’effectue de la manière suivante :
SELECT une_colonne FROM une_table WHERE une_colonne LIKE un_modele;
Cette requête SQL va donc sélectionner, grâce à l'opérateur LIKE, les enregistrements
provenant de la table nommée une_table et dont la valeur de la colonne une_colonne respecte
le modèle de recherche un_modele. Dans cet exemple, le modèle n’a pas été défini.
CARACTÈRES JOKERS (WILDCARDS)
L'opérateur LIKE est inséparable des caractères jokers (wildcards) : % (pourcentage)
et _ (underscore). Un caractère joker est utilisé pour se substituer à n'importe quel autre
caractère, au sein d'une chaîne de caractères. Ci-dessous quelques précisions.
Joker % : il ne représente aucun, un seul ou plusieurs caractères.
Joker _ : il représente un seul et unique caractère.
MODÈLES DE RECHERCHE
Le nombre de modèles n'a de limite que votre imagination. Vous êtes libre d'utiliser le modèle
que vous souhaitez en fonction de vos besoins. Ci-après une liste d'exemples de modèles de
recherche avec l'opérateur LIKE.
Liste d'exemples de modèles pour l'opérateur LIKE
Model Commentaire
LIKE "a%" Recherche toutes les chaînes de caractères
qui commencent par le caractère a.
LIKE "%a" Recherche toutes les chaînes de caractères
qui terminent par le caractère a.
LIKE "%a%" Recherche toutes les chaînes de caractères
qui contiennent au moins un caractère a.
LIKE "a%b" Recherche toutes les chaînes de caractères
qui commencent par le caractère a et
terminent par le caractère b.
LIKE "a__" Recherche toutes les chaînes de caractères
de trois caractères qui commencent par le
caractère a.
LIKE "_a%" Recherche toutes les chaînes de caractères
qui possèdent le caractère a en deuxième
position.
Afin de mettre en évidence l'utilisation de l'opérateur LIKE et de comprendre rapidement
comment ce dernier fonctionne, voyons sans plus attendre un exemple simple. Pour cet
exemple, nous utiliserons la table clients qui contient les colonnes et données suivantes.
Rechercher les clients dont l'adresse email termine par @[Link]
Rechercher les clients dont le numéro de téléphone commence par 78
Rechercher les clients dont le prénom contient au moins un S
Rechercher les clients dont le nom comporte exactement 4 caractères
Rechercher les clients dont le prénom comporte un h en deuxième position
JOINTURE SQL
Introduction :
Depuis le début du cours, nos requêtes portent uniquement sur une table à la fois. Les jointures
en SQL permettent d’associer plusieurs tables dans une même requête. Cela permet d'exploiter
la puissance des bases de données relationnelles pour obtenir des résultats qui combinent les
données de plusieurs tables en même temps de manière efficace. Dans ce chapitre, nous
aborderons deux types de jointures différents avec les commandes SQL suivantes : INNER
JOIN et LEFT JOIN.
Définition :
Les jointures SQL consistent à associer les lignes de deux tables en associant l'égalité des
valeurs d'une colonne d'une première table par rapport à la valeur d'une colonne d'une seconde
table. On nomme ce concept : la condition.
Intérêt :
L'intérêt des jointures ? Elles sont tout d'abord un moyen d'optimiser les processus, en
améliorant leur vitesse d'exécution. De manière générale, il est préférable de faire une seule
requête avec plusieurs jointures plutôt que plusieurs requêtes simples. Elles permettent
également d'éviter les répétitions d'informations.
INNER JOIN
Dans le langage SQL la commande INNER JOIN, est un type de jointure très commune pour
lier plusieurs tables entre-elles dans une même requête. Cette commande retourne les
enregistrements lorsqu'il y a au moins une ligne dans chaque colonne listé dans la condition.
Autrement dit, lorsque la condition est respectée dans les deux tables.
Image : Intersection de la sélection des enregistrements avec la commande INNER JOIN en
SQL.
la syntaxe est la suivante :
SELECT *
FROM table_1
INNER JOIN table_2 ON table_1.une_colonne = table_2.autre_colonne;
Cette requête SQL va donc sélectionner grâce à la commande INNER JOIN les enregistrements
des tables table_1 et table_2 lorsque les données de la colonne une_colonne de la
table table_1 est égal aux données de la colonne autre_colonne de la table table_2.
Afin de mettre en évidence l'utilisation de la commande INNER JOIN et de comprendre
rapidement comment cette dernière fonctionne, voyons sans plus attendre un exemple simple.
Pour cet exemple, nous utiliserons la base de données site contenant comme tables suivantes
table clients et commandes qui contiennent les colonnes et données suivantes. Ces dernières
simulent les tables qui contiennent les clients et les commandes d'une entreprise quelconque.
#mysql –u root –p
Création de notre base de données site :
#create database site ;
On utilise la commande use pour se placer dans la base de données.
#use site ;
Création de la table clients contenant les champs (id, prenom, nom, email) ;
Création de la table commande contenant les champs (id_commande, id_client, date_ajout,
transporteur);
Insertion des données dans la clients (enregistrements).
Affichage des clients qui existe dans la table clients.
Insertion des données dans la commandes (enregistrements).
Affichage des clients qui existe dans la table commandes.
Reprenons notre première requête SQL avec la commande INNER JOIN et complétons
correctement cette dernière avec les tables exemples. Nous souhaitons sélectionner uniquement
les clients qui ont commandés avec leurs commandes respectives. Pour effectuer cette
opération, la requête est la suivante :
Le résultat de la requête met en évidence la jointure et son utilité. On retrouve donc les
commandes des clients #1, #2, #3 et #4, car ils ont commandé au moins une fois. A l'inverse,
on ne retrouve pas les clients #5 car il n’a pas de commande associés.
LEFT JOIN
Dans le langage SQL la commande LEFT JOIN, est un type de jointure commune pour lier
plusieurs tables entre-elles dans une même requête. Cette commande retourne tous les
enregistrements de la table première table, celle de gauche (left), avec la correspondance dans
la deuxième table si la condition est respectée. En d'autres termes, ce type de jointure permet
de retourner tous les enregistrements d'une table avec les données liées d'une autre table si elles
existent.
L’utilisation la plus basique de cette commande s’effectue de la manière suivante :
SELECT *
FROM table_1
LEFT JOIN table_2 ON table_1.une_colonne = table_2.autre_colonne;
Cette requête SQL va donc sélectionner grâce à la commande LEFT JOIN tous les
enregistrements de la table table_1 et les enregistrements lorsque les données de la
colonne une_colonne de la table table_1 est égal aux données de la colonne autre_colonne de
la table table_2.
Afin de mettre en évidence l'utilisation de la commande LEFT JOIN et de comprendre
rapidement comment cette dernière fonctionne, voyons sans plus attendre un exemple simple.
Pour cet exemple, nous utiliserons les mêmes tables clients et commandes déjà décrites ci-
dessus.
Reprenons notre première requête SQL avec la commande LEFT JOIN et complétons
correctement cette dernière avec les tables exemples. Nous souhaitons sélectionner tous les
clients avec leurs commandes respectives. Pour effectuer cette opération, la requête est la
suivante :
Le résultat de la requête met en évidence la jointure avec la commande LEFT JOIN, son utilité
et surtout sa différence avec la commande INNER JOIN. On retrouve donc bien tous les clients
avec les commandes respectives. Pour les clients #5 qui n'ont pas de commandes, les colonnes
sélectionnées de la table commandes sont vides.
OPÉRATEUR SQL BETWEEN
En SQL, l'opérateur BETWEEN permet de sélectionner des enregistrements en fonction d’un
intervalle. Cet opérateur s'utilise avec la commande WHERE. L'intervalle peut être constitué
de chaînes de caractères, de nombres ou de dates. L’utilisation la plus basique de cette
commande s’effectue de la manière suivante :
SELECT une_colonne FROM une_table WHERE une_colonne BETWEEN "valeur_1"
AND "valeur_2";
Cette requête SQL va donc sélectionner grâce à la commande SELECT les enregistrements
provenant de la table nommée une_table et dont la valeur de la colonne une_colonne est
comprise entre valeur_1 et valeur_2. Avec le SGBD MySQL, les intervalles avec
l'opérateur BETWEEN sont inclusifs.
Afin de mettre en évidence l'utilisation de l'opérateur BETWEEN et de comprendre rapidement
comment cette dernière fonctionne, voyons sans plus attendre un exemple simple. Pour cet
exemple, nous utiliserons la table commandes qui contient les colonnes et données suivantes.
Reprenons notre première requête SQL avec l'opérateur BETWEEN et complétons
correctement cette dernière avec la table commandes. Nous souhaitons sélectionner
uniquement les commandes entre le 04 et le 06 février 2023. Pour effectuer cette opération, la
requête est la suivante :
OPÉRATEURS SQL IN ET NOT IN
En SQL, l'opérateur IN permet de sélectionner des enregistrements si la valeur d'une
colonne est comprise dans une liste de valeurs. C'est la commande idéale pour vérifier si une
colonne possède une valeur ou une autre. La commande IN permet d'éviter d'avoir à recourir à
de multiples OR. Cet opérateur s'utilise avec la commande WHERE. L’utilisation la plus
basique de cette commande s’effectue de la manière suivante :
SELECT une_colonne FROM une_table WHERE une_colonne IN ("valeur_1",
"valeur_2", "valeur_3");
Cette requête SQL va donc sélectionner, grâce à la commande IN, les enregistrements
provenant de la table nommée une_table et dont la valeur de la
colonne une_colonne est valeur_1 ou valeur_2 ou valeur_3.
Attention :
Il n'y a pas de limite de valeurs pour la commande IN. On peut donc ajouter autant de valeurs
que nécessaire entre les parenthèses. Cependant, il est tout de même nécessaire d'ajouter au
moins une valeur.
Afin de mettre en évidence l'utilisation de l'opérateur IN et de comprendre rapidement comment
ce dernier fonctionne, voyons sans plus attendre un exemple simple. Nous comparerons
également la solution avec la commande IN et OR. Pour cet exemple, nous utiliserons la
table commandes qui contient les colonnes et données suivantes :
Reprenons notre première requête SQL avec l'opérateur IN et complétons correctement cette
dernière avec la table commandes. Nous souhaitons sélectionner les commandes avec les
identifiants 3, 4 ou 5. Pour effectuer cette opération, la requête est la suivante :
Maintenant que nous avons la solution avec la commande IN, nous pouvons comparer avec
l'utilisation frénétique de la commande OR. Cette solution produit le même résultat.
Dans certains cas de figures, nous souhaitons obtenir exactement l'inverse de ce que propose
l'opérateur IN. En SQL, l'opérateur NOT IN permet de sélectionner des enregistrements si la
valeur d'une colonne n'est pas comprise dans une liste de valeurs.
Reprenons notre première requête SQL avec l'opérateur IN et modifions cette dernière pour
utiliser l'opérateur NOT IN. Nous souhaitons sélectionner les commandes qui n'ont pas les
identifiants 1 ou 5. Pour effectuer cette opération, la requête est la suivante :
OPÉRATEUR SQL LIKE
En SQL, l'opérateur LIKE permet de faire une recherche suivant un modèle sur les valeurs
d'une colonne. Il existe plusieurs modèles de recherches (pattern en anglais) que nous
détaillerons par la suite. Une nouvelle fois, cet opérateur s'utilise avec la commande WHERE.
C'est un opérateur extrêmement puissant qui offre de nombreuses possibilités. L’utilisation la
plus basique de ce dernier s’effectue de la manière suivante :
SELECT une_colonne FROM une_table WHERE une_colonne LIKE un_modele;
Cette requête SQL va donc sélectionner, grâce à l'opérateur LIKE, les enregistrements
provenant de la table nommée une_table et dont la valeur de la colonne une_colonne respecte
le modèle de recherche un_modele. Dans cet exemple, le modèle n’a pas été défini.
CARACTÈRES JOKERS (WILDCARDS)
L'opérateur LIKE est inséparable des caractères jokers (wildcards) : % (pourcentage)
et _ (underscore). Un caractère joker est utilisé pour se substituer à n'importe quel autre
caractère, au sein d'une chaîne de caractères. Ci-dessous quelques précisions.
Joker % : il ne représente aucun, un seul ou plusieurs caractères.
Joker _ : il représente un seul et unique caractère.
MODÈLES DE RECHERCHE
Le nombre de modèles n'a de limite que votre imagination. Vous êtes libre d'utiliser le modèle
que vous souhaitez en fonction de vos besoins. Ci-après une liste d'exemples de modèles de
recherche avec l'opérateur LIKE.
Liste d'exemples de modèles pour l'opérateur LIKE
Model Commentaire
LIKE "a%" Recherche toutes les chaînes de caractères
qui commencent par le caractère a.
LIKE "%a" Recherche toutes les chaînes de caractères
qui terminent par le caractère a.
LIKE "%a%" Recherche toutes les chaînes de caractères
qui contiennent au moins un caractère a.
LIKE "a%b" Recherche toutes les chaînes de caractères
qui commencent par le caractère a et
terminent par le caractère b.
LIKE "a__" Recherche toutes les chaînes de caractères
de trois caractères qui commencent par le
caractère a.
LIKE "_a%" Recherche toutes les chaînes de caractères
qui possèdent le caractère a en deuxième
position.
Afin de mettre en évidence l'utilisation de l'opérateur LIKE et de comprendre rapidement
comment ce dernier fonctionne, voyons sans plus attendre un exemple simple. Pour cet
exemple, nous utiliserons la table clients qui contient les colonnes et données suivantes.
RECHERCHER LES CLIENTS DONT L'ADRESSE EMAIL TERMINE PAR @[Link]
RECHERCHER LES CLIENTS DONT LE CODE POSTAL COMMENCE PAR 77
RECHERCHER LES CLIENTS DONT LE PRÉNOM CONTIENT AU MOINS UN S
RECHERCHER LES CLIENTS DONT LE NOM COMPORTE EXACTEMENT 4
CARACTÈRES
RECHERCHER LES CLIENTS DONT LE PRÉNOM COMPORTE UN E EN DEUXIÈME
POSITION