C VOLT - informatique 2024 - 2025
Requête SQL (= SQL query)
Une requête SQL simple est de la forme :
SELECT Attribut1, Attribut2, Attribut3 projection
conditions presque comme en Python :
FROM Table1 jourCours = "lundi"
note < 4.5
WHERE condition(s) restriction
Optionnels note <> 4.5 (et pas !=)
ORDER BY Attribut3 ordonnancement jourCours = "lundi" AND note < 4.5
jourCours = "lundi" OR jourCours = "mardi"
En général, on écrit les mots réservés en majuscule pour que la requête soit plus lisible.
Ce n’est pas obligatoire.
26
Requête SQL : projection
Dans une projection, il est possible de
• sélectionner une partie des attributs : SELECT Attribut1, Attribut2
• sélectionner tous les attributs : SELECT *
• sélectionner des valeurs distinctes d’attributs : SELECT DISTINCT Attribut1, Attribut2
• sélectionner le minimum / maximum : SELECT MIN(Attribut1)
• dénombrer les occurrences d'un attribut : SELECT COUNT(Attribut1)
• dénombrer les occurrences distinctes d'un attribut : SELECT COUNT(DISTINCT Attribut1)
• et plus... (voir la documentation ou des tutoriels)
([Link]
27
1
C VOLT - informatique 2024 - 2025
Requête SQL : équijointures
Lorsqu’on veut sélectionner des attributs de plusieurs tables, il faut indiquer
dans la requête SQL comment relier les différentes tables.
Une clause INNER JOIN permet de relier deux tables selon une ou
plusieurs conditions :
Si deux tables ont un attribut
SELECT [Link], [Link], [Link]… homonyme, il faut préfixer le nom
de l'attribut par le nom de la table.
FROM Table1 La lisibilité est également
améliorée
INNER JOIN Table2 ON Table1.Attribut1 = Table2.Attribut5
clé primaire = clé étrangère condition(s) de jointure
INNER JOIN Table3 ON Table2.Attribut3 = Table3.Attribut1
clé primaire = clé étrangère
28
Requête SQL : équijointures
En préfixant avec le nom de la table, la longueur de la requête augmente…
Afin de réduire cet impact, il est possible d’utiliser un nom de corrélation (alias de table).
Généralement la première lettre du nom de la table est utilisé, pour autant que les tables
impliquées ne commencent pas par la même lettre.
La syntaxe de la requête devient :
SELECT [Link], [Link], [Link]…
FROM Table1 T1
clé primaire = clé étrangère
INNER JOIN Table2 T2 ON T1.Attribut1 = T2.Attribut5
condition(s) de jointure
clé primaire = clé étrangère
INNER JOIN Table3 T3 ON T2.Attribut3 = T3.Attribut1
29
2
C VOLT - informatique 2024 - 2025
Modèle Logique Relationnel de Données
INNER JOIN possibles
SALLE MAITRE
noSalle noMaitre
capacitéSalle nomMaitre
rangSalle COURS prenomMaitre
colonneSalle noCours sexeMaitre
typeSalle libelleCours dateNaissanceMaitre
effectifMaxCours
MOYENNE jourCours ELEVE
noEleve noMaitre noEleve
noCours noSalle nomEleve
moyenne prenomEleve
sexeEleve
dateNaissanceEleve
30
Requête SQL : agrégation
La clause GROUP BY permet de regrouper les lignes d'une requête qui
partagent une ou plusieurs valeurs communes et d'appliquer des fonctions
statistiques d'agrégation sur chaque groupe.
Exemples de requêtes :
• Combien y-a-t-il d’employés par département ?
• Quel est l'âge moyen/le plus élevé, le moins élevé des employés de
chaque département ?
• Quelle est la masse salariale de chaque département ?
31
3
C VOLT - informatique 2024 - 2025
Requête SQL : agrégation
La clause GROUP BY vient s’ajouter à une éventuelle clause WHERE.
SELECT Attribut1, Attribut2, … fonction(s) statistique(s)
FROM Table1
La clause SELECT ne contient généralement
WHERE condition(s) que les attributs qui sont dans le GROUP BY
GROUP BY Attribut(s) ou une/des fonction(s) d'agrégation
ORDER BY Attribut3
32
Requête SQL : restriction sur agrégation
La clause HAVING est utilisée pour filtrer les résultats d'un GROUP BY
basés sur une condition spécifique. C'est l'équivalent de WHERE mais pour
les regroupements.
Exemples de requêtes :
• Quels sont les départements de plus de x employés ?
• Quel sont les départements pour lesquels l’âge moyen dépasse x ans ?
• Quel sont les départements pour lesquels la masse salariale dépasse
x CHF ?
33
4
C VOLT - informatique 2024 - 2025
Requête SQL : restriction sur agrégation
La clause HAVING vient s’ajouter à la clause GROUP BY dont elle est
indissociable.
SELECT Attribut1, Attribut2, Attribut3
FROM Table1
WHERE condition(s) restriction avant le regroupement
GROUP BY Attribut(s)
HAVING condition(s) restriction après le regroupement
ORDER BY Attribut3
34
Requête SQL : clause LIMIT
Cette clause
• permet de limiter le nombre de résultats retournés par une requête SQL.
• se place en dernière position dans la requête et quasi obligatoirement
après un ORDER BY pour garantir un résultat cohérent.
• est suivie par une valeur entière exprimant le nombre de lignes qui doivent
être retournées
Exemple : SELECT attribut(s) FROM table ORDER BY attribut LIMIT n
35
5
C VOLT - informatique 2024 - 2025
Requête SQL : clause LIMIT avec OFFSET
OFFSET permet d’indiquer à partir de quelle ligne, le nombre de lignes fixé
par la clause LIMIT s’applique.
Exemple : SELECT * FROM table LIMIT 10 OFFSET 20;
retournera 10 lignes à partir de la 21e ligne.
36
Valeur NULL
Les valeurs NULL représentent l'absence de données ou des données
inconnues en SQL.
Pour tester la présence/absence de cette valeur, SQL met é disposition la
clause IS [NOT] NULL.
Leur gestion correcte est essentielle pour maintenir l'intégrité des données
et obtenir des résultats précis lors des requêtes.
• NULL n'est pas égal à zéro, à une chaîne vide ou à un espace
• NULL n'est pas égal à un autre NULL
• NULL n'est ni vrai ni faux, mais inconnu
37
6
C VOLT - informatique 2024 - 2025
NULL dans les opérations arithmétiques
Toute opération arithmétique impliquant NULL donne NULL
NULL dans les fonctions d'agrégation
• COUNT(*) compte toutes les lignes
• COUNT(colonne) ignore les valeurs NULL
• SUM, AVG, MIN, MAX ignorent les valeurs NULL
38
Gestion des valeurs NULL
SELECT * FROM clients WHERE NOT (age = 25);
et
SELECT * FROM clients WHERE age != 25;
ne retournent pas le même résultat.
La première requête retourne les lignes où age IS NULL, la seconde ne
retourne PAS les lignes où age IS NULL.
• TRUE OR NULL = TRUE TRUE AND NULL = NULL
• FALSE OR NULL = NULL FALSE AND NULL = FALSE
39
7
C VOLT - informatique 2024 - 2025
Gestion des valeurs NULL : IFNULL()
SQLite fournit la fonction IFNULL() pour convertir une valeur NULL en une
autre valeur spécifiée.
La syntaxe est la suivante : IFNULL(expression, valeur_de_remplacement)
Cette fonction vérifie si la première expression est NULL :
• Si elle est NULL, la fonction retourne la valeur de remplacement fournie en
second argument, sinon elle retourne la valeur de la première expression.
• Exemple
SELECT nom, IFNULL(telephone, 'Non renseigné') AS telephone_contact
FROM clients;
Si telephone est NULL, la requête affichera 'Non renseigné' à la place.
40